summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2014-08-07 19:39:10 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2014-08-07 19:39:10 +0800
commitbaa910a873b24bd5835a59bc41da2470b0af6a36 (patch)
tree170fa691c6b1a153a3b7f25f120aa9406f0a588d
parent07bea9b1aaa47bb3612b91535631de2296d1173b (diff)
downloadpttbbs-baa910a873b24bd5835a59bc41da2470b0af6a36.tar
pttbbs-baa910a873b24bd5835a59bc41da2470b0af6a36.tar.gz
pttbbs-baa910a873b24bd5835a59bc41da2470b0af6a36.tar.bz2
pttbbs-baa910a873b24bd5835a59bc41da2470b0af6a36.tar.lz
pttbbs-baa910a873b24bd5835a59bc41da2470b0af6a36.tar.xz
pttbbs-baa910a873b24bd5835a59bc41da2470b0af6a36.tar.zst
pttbbs-baa910a873b24bd5835a59bc41da2470b0af6a36.zip
Fix offset-by-one and add GetContent request type.
git-svn-id: http://opensvn.csie.org/pttbbs/trunk@6041 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rwxr-xr-xpttbbs/daemon/postd/postd.py5
-rw-r--r--pttbbs/daemon/postd/rebuild.c2
-rw-r--r--pttbbs/include/daemons.h6
3 files changed, 12 insertions, 1 deletions
diff --git a/pttbbs/daemon/postd/postd.py b/pttbbs/daemon/postd/postd.py
index 56eedc9f..911ceaa6 100755
--- a/pttbbs/daemon/postd/postd.py
+++ b/pttbbs/daemon/postd/postd.py
@@ -102,6 +102,11 @@ def SavePost2(content, keypak, data, extra=None):
logging.error('%s/%s: save time (%d bytes): %.3fs.',
keypak.board, keypak.file, content_length, exec_time)
+def GetPostContent(keypak):
+ logging.debug("GetPostContent: %r", keypak)
+ key = '%s/%s:content' % (keypak.board, keypak.file)
+ return g_db.get(key) or ''
+
def open_database(db_path):
global g_db
diff --git a/pttbbs/daemon/postd/rebuild.c b/pttbbs/daemon/postd/rebuild.c
index f336a78e..cf6c73fd 100644
--- a/pttbbs/daemon/postd/rebuild.c
+++ b/pttbbs/daemon/postd/rebuild.c
@@ -136,8 +136,8 @@ char *ProcessPost(const char *filename) {
fseek(fp, offBegin, SEEK_SET);
content = malloc(offEnd - offBegin + 1);
assert(content);
+ fread(content, 1, offEnd - offBegin, fp);
content[offEnd - offBegin] = 0;
- fread(content, 1, offEnd - offBegin + 1, fp);
// Try to parse comments
fseek(fp, offEnd, SEEK_SET);
diff --git a/pttbbs/include/daemons.h b/pttbbs/include/daemons.h
index 1066e602..b7f18b1a 100644
--- a/pttbbs/include/daemons.h
+++ b/pttbbs/include/daemons.h
@@ -210,6 +210,12 @@ typedef struct {
PostKeyReq key;
} PACKSTRUCT PostAddRequest;
+typedef struct {
+ short cb;
+ short operation;
+ PostKeyReq key;
+} PACKSTRUCT PostGetContentRequest;
+
///////////////////////////////////////////////////////////////////////
// online friend relation daemon
//