From 1b1142e4431812346c0d49e9581b6c1a964e949d Mon Sep 17 00:00:00 2001 From: kcwu Date: Wed, 10 Jun 2009 16:47:34 +0000 Subject: * add is_valid_brdname() to cmbbs git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@4553 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- upgrade/merge_sob.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'upgrade') diff --git a/upgrade/merge_sob.c b/upgrade/merge_sob.c index 91b97e37..4a78f112 100644 --- a/upgrade/merge_sob.c +++ b/upgrade/merge_sob.c @@ -197,6 +197,23 @@ m_sob(void) return 0; } +// sob 允許板名用 a-zA-Z0-9_.- 開頭 +// ptt 只允許用 a-zA-Z +static int +is_valid_sob_brdname(const char *brd) +{ + register char ch, rv=0; + + ch = *brd; + if (!isalpha((int)ch)) + rv = 2; + while ((ch = *brd++)) { + if (not_alnum(ch) && ch != '_' && ch != '-' && ch != '.') + return (1|rv); + } + return rv; +} + void m_sob_brd(char *bname, char *fromdir) { @@ -208,8 +225,13 @@ m_sob_brd(char *bname, char *fromdir) if(!getdata(20,0, "SOB的板名 [英文大小寫要完全正確]:", fbname, 20, DOECHO)) return; + } while(!is_valid_sob_brdname(fbname)); + + if (!is_valid_brdname(fbname)) { + // TODO ask for alternative name + vmsg("非系統允許的板名, 暫不支援"); + return; } - while((invalid_brdname(fbname)&1)); sprintf(buf, "sob/man/%s.tar.gz", fbname); if(!dashf(buf)) -- cgit v1.2.3