summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2014-08-08 16:46:49 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2014-08-08 16:46:49 +0800
commitca4f5541bc8d888bf0a06506da1ccd84a617dec3 (patch)
tree235f9297f88469cf5f5771097dc528b63eed3774
parent535b7b6b16c0cb13d9fb254d0690dc02c874869b (diff)
downloadpttbbs-ca4f5541bc8d888bf0a06506da1ccd84a617dec3.tar
pttbbs-ca4f5541bc8d888bf0a06506da1ccd84a617dec3.tar.gz
pttbbs-ca4f5541bc8d888bf0a06506da1ccd84a617dec3.tar.bz2
pttbbs-ca4f5541bc8d888bf0a06506da1ccd84a617dec3.tar.lz
pttbbs-ca4f5541bc8d888bf0a06506da1ccd84a617dec3.tar.xz
pttbbs-ca4f5541bc8d888bf0a06506da1ccd84a617dec3.tar.zst
pttbbs-ca4f5541bc8d888bf0a06506da1ccd84a617dec3.zip
Change comments from tuple to dict.
Also support 'remote import' by command line. git-svn-id: http://opensvn.csie.org/pttbbs/trunk@6052 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rwxr-xr-xpttbbs/daemon/postd/postd.py4
-rw-r--r--pttbbs/daemon/postd/rebuild.c20
-rwxr-xr-xpttbbs/util/pyutil/pttpost.py14
3 files changed, 22 insertions, 16 deletions
diff --git a/pttbbs/daemon/postd/postd.py b/pttbbs/daemon/postd/postd.py
index 3f328c2b..2fb85264 100755
--- a/pttbbs/daemon/postd/postd.py
+++ b/pttbbs/daemon/postd/postd.py
@@ -90,7 +90,9 @@ def GetPostContent(keypak):
comment_num = int(g_db.get(key + ':comment') or '0')
for i in range(comment_num):
comment = deserialize(g_db.get('%s:comment#%08d' % (key, i + 1)))
- content += '<%s> %s: %s %s\n' % tuple(map(big5.encode, comment))
+ # Sorry, output is big5.
+ comment = {k: big5.encode(v) for k,v in comment.items()}
+ content += '<%(kind)s> %(author)s: %(content)s %(trailing)s\n' % comment
return content
def SavePostComment(keypak, comment):
diff --git a/pttbbs/daemon/postd/rebuild.c b/pttbbs/daemon/postd/rebuild.c
index 3efc1d21..40279b58 100644
--- a/pttbbs/daemon/postd/rebuild.c
+++ b/pttbbs/daemon/postd/rebuild.c
@@ -2,7 +2,7 @@
#include "bbs.h"
#include "daemons.h"
-const char *server_addr = POSTD_ADDR;
+const char *server = POSTD_ADDR;
int PostAddRecord(const char *board, const fileheader_t *fhdr, const char *fpath)
{
@@ -54,7 +54,7 @@ int PostAddRecord(const char *board, const fileheader_t *fhdr, const char *fpath
strlcpy(req.extra.userid, userid, sizeof(req.extra.userid));
printf(" (userref: %s.%d)", req.extra.userid, req.extra.userref);
- s = toconnectex(server_addr, 10);
+ s = toconnectex(server, 10);
if (s < 0)
return 1;
if (success && towrite(s, &req, sizeof(req)) < 0)
@@ -123,17 +123,21 @@ void rebuild_board(int bid GCC_UNUSED, boardheader_t *bp, int is_remote)
fclose(fp);
}
-int main(int argc, char **argv)
+int main(int argc, const char **argv)
{
int bid = 0;
- int is_remote = (server_addr[0] != ':');
-
- if (is_remote) {
- printf(" *** Serving content to remote host: %s\n", server_addr);
+ const char *prog = argv[0];
+ int is_remote = 0;
+
+ if (argc > 1 && strchr(argv[1], ':')) {
+ server = argv[1];
+ is_remote = (server[0] != ':');
+ printf("Changed server to%s: %s\n", is_remote ? " REMOTE": "", server);
+ argc--, argv++;
}
if (argc < 2) {
- printf("usage: %s boardname ...\n", argv[0]);
+ printf("usage: %s [host:port<5135>] boardname ...\n", prog);
return 1;
}
diff --git a/pttbbs/util/pyutil/pttpost.py b/pttbbs/util/pyutil/pttpost.py
index d52b8400..2773503b 100755
--- a/pttbbs/util/pyutil/pttpost.py
+++ b/pttbbs/util/pyutil/pttpost.py
@@ -41,17 +41,17 @@ def ParseComment(buf):
"""Parses a buffer for known comment formats.
Returns:
- (kind, author, content, trailing)
+ Dict in (kind, author, content, trailing), or None on failure.
"""
- invalid = (None, None, None, None)
match = re.findall(CommentsFormatRe, buf)
if len(match) < 1:
- return invalid
+ return None
match = match[0]
(kind, author, content, trailing) = match
- return map(big5.decode, (str(CommentsPrefixes.index(kind) + 1),
- author, content.rstrip(' '),
- trailing.rstrip('\n')))
+ return dict(zip(('kind', 'author', 'content', 'trailing'),
+ map(big5.decode, (str(CommentsPrefixes.index(kind) + 1),
+ author, content.rstrip(' '),
+ trailing.rstrip('\n')))))
def ParsePost(contents):
'''Returns a legacy post into two parts.
@@ -92,7 +92,7 @@ def ParsePost(contents):
contents.pop(-1)
continue
result = ParseComment(contents[-1])
- if result[0] is None:
+ if result is None:
break
comments.insert(0, result)
contents.pop(-1)