diff options
-rw-r--r-- | innbbsd/Makefile | 4 | ||||
-rw-r--r-- | innbbsd/bbslib.c | 4 | ||||
-rw-r--r-- | innbbsd/bbslink.c | 30 | ||||
-rw-r--r-- | innbbsd/bbsnnrp.c | 8 | ||||
-rw-r--r-- | innbbsd/echobbslib.c | 4 | ||||
-rw-r--r-- | innbbsd/externs.h | 124 | ||||
-rw-r--r-- | innbbsd/file.c | 188 | ||||
-rw-r--r-- | innbbsd/his.c | 6 | ||||
-rw-r--r-- | innbbsd/innbbsconf.h | 9 | ||||
-rw-r--r-- | innbbsd/innbbsd.c | 2 | ||||
-rw-r--r-- | innbbsd/inntobbs.c | 4 | ||||
-rw-r--r-- | innbbsd/nocem.c | 2 | ||||
-rw-r--r-- | innbbsd/receive_article.c | 10 |
13 files changed, 105 insertions, 290 deletions
diff --git a/innbbsd/Makefile b/innbbsd/Makefile index 0f74ee77..676aee46 100644 --- a/innbbsd/Makefile +++ b/innbbsd/Makefile @@ -7,11 +7,11 @@ ADMINUSER?= root@your.domain.name .if $(OSTYPE) == "FreeBSD" # FreeBSD為了 innbbsd額外需加的參數 -inn_CFLAGS= -DBSD44 -DMMAP -DGETRUSAGE +inn_CFLAGS= -DMMAP -DGETRUSAGE inn_LDFLAGS= -L/usr/local/lib -liconv .else # Linux為了 innbbsd額外需加的參數 -inn_CFLAGS= -DLINUX -DGETRUSAGE +inn_CFLAGS= -DGETRUSAGE inn_LDFLAGS= .endif diff --git a/innbbsd/bbslib.c b/innbbsd/bbslib.c index d3116317..3ec5cf6d 100644 --- a/innbbsd/bbslib.c +++ b/innbbsd/bbslib.c @@ -243,7 +243,7 @@ initial_bbs(char *outgoing) } while (fscanf(FN, "%s", MYBBSID) != EOF); fclose(FN); - if (!isdir(fileglue("%s/out.going", BBSHOME))) { + if (!dashd(fileglue("%s/out.going", BBSHOME))) { mkdir((char *)fileglue("%s/out.going", BBSHOME), 0750); } if (NONENEWSFEEDS == 0) @@ -617,7 +617,7 @@ myrealloc(void *optr, int size) void testandmkdir(char *dir) { - if (!isdir(dir)) { + if (!dashd(dir)) { char path[MAXPATHLEN + 12]; sprintf(path, "mkdir -p %s", dir); system(path); diff --git a/innbbsd/bbslink.c b/innbbsd/bbslink.c index b81469d9..a8bd3aea 100644 --- a/innbbsd/bbslink.c +++ b/innbbsd/bbslink.c @@ -1,13 +1,7 @@ -#include "antisplam.h" -#if defined( LINUX ) -#include "innbbsconf.h" -#include "bbslib.h" -#include <stdarg.h> -#else +#include "antisplam.h" #include <stdarg.h> #include "innbbsconf.h" #include "bbslib.h" -#endif #include <sys/mman.h> @@ -187,7 +181,7 @@ bbslink_un_lock(file) { char *lockfile = fileglue("%s.LOCK", file); - if (isfile(lockfile)) + if (dashf(lockfile)) unlink(lockfile); } @@ -459,7 +453,7 @@ process_article(board, filename, userid, nickname, subject) subject = "無題"; } filepath = fileglue("%s/boards/%c/%s/%s", BBSHOME, board[0], board, filename); - if (isfile(filepath)) { + if (dashf(filepath)) { linkoverview_t lover; if (read_article(&lover, filepath, userid)) { @@ -620,7 +614,7 @@ read_outgoing(sover) fprintf(stderr, "can't open %s/boards/%c/%s/%s\n", BBSHOME, board[0], board, filename); return -1; } - FD_SIZE = filesize(fileglue("%s/boards/%c/%s/%s", BBSHOME, board[0], board, filename)); + FD_SIZE = dashs(fileglue("%s/boards/%c/%s/%s", BBSHOME, board[0], board, filename)); if (FD_BUF == NULL) { FD_BUF = (char *)mymalloc(FD_SIZE + 1 + strlen(COMMENT)); } else { @@ -1176,7 +1170,7 @@ cancel_outgoing(board, filename, from, subject) if (strncmp(result, "post to ", 8) == 0) { /* try to remove it */ strncpy(filepath, fileglue("%s/boards/%c/%s/%s", BBSHOME, board[0], board, filename), sizeof filepath); - if (isfile(filepath)) { + if (dashf(filepath)) { Rename(filepath, fileglue("%s.cancel", filepath)); } FN = fopen(filepath, "w"); @@ -1438,17 +1432,17 @@ send_article() sprintf(sendfile, "%s.sending", site); sprintf(feedfile, "%s.feed", site); sprintf(feedingfile, "%s.feeding", site); - if (isfile(sendfile) && !iszerofile(sendfile)) { + if (dashf(sendfile) && dashs(sendfile) == 0) { if (bbslink_get_lock(sendfile)) { send_nntplink(node, site, nntphost, protocol, port, sendfile, nlcount); bbslink_un_lock(sendfile); } } - if (isfile(linkfile) && !iszerofile(linkfile)) { + if (dashf(linkfile) && dashs(linkfile) == 0) { if (!NoAction) { if (bbslink_get_lock(sendfile) && bbslink_get_lock(linkfile) && bbslink_get_lock(feedingfile)) { - if (isfile(sendfile) && !iszerofile(sendfile)) { + if (dashf(sendfile) && dashs(sendfile) == 0) { save_nntplink(node, sendfile); } if (node->feedfp) { @@ -1465,16 +1459,16 @@ send_article() send_nntplink(node, site, nntphost, protocol, port, linkfile, nlcount); } } - if (isfile(feedingfile) && !iszerofile(feedingfile)) { + if (dashf(feedingfile) && dashs(feedingfile) == 0) { if (bbslink_get_lock(feedingfile)) { send_nntplink(node, site, nntphost, protocol, port, feedingfile, nlcount); bbslink_un_lock(feedingfile); } } - if (isfile(feedfile) && !iszerofile(feedfile)) { + if (dashf(feedfile) && dashs(feedfile) == 0) { if (!NoAction) { if (bbslink_get_lock(feedfile) && bbslink_get_lock(feedingfile)) { - if (isfile(feedingfile) && !iszerofile(feedingfile)) { + if (dashf(feedingfile) && dashs(feedingfile) == 0) { save_nntplink(node, feedingfile); if (node->feedfp) { fclose(node->feedfp); @@ -1638,7 +1632,7 @@ bntplink(argc, argv) } /* getlock */ } /* if NoVisit is false */ sprintf(cancelpost, "%s/cancel.bntp", INNDHOME); - if (isfile(cancelpost)) { + if (dashf(cancelpost)) { FILE *CANCELFILE; if (bbslink_get_lock(cancelpost) && bbslink_get_lock(cancelfile)) { diff --git a/innbbsd/bbsnnrp.c b/innbbsd/bbsnnrp.c index 41d06b87..87e04aee 100644 --- a/innbbsd/bbsnnrp.c +++ b/innbbsd/bbsnnrp.c @@ -85,7 +85,7 @@ doterm(s) { printf("bbsnnrp terminated. Signal %d\n", s); writerc(&BBSNNRP); - if (isfile(LockFile)) + if (dashf(LockFile)) unlink(LockFile); exit(1); } @@ -355,7 +355,7 @@ stdinreadnews(bbsnnrp) bbsnnrp->nnrpin = oldfp; fclose(tmpfp); } - if (isfile(tmpfilename)) { + if (dashf(tmpfilename)) { unlink(tmpfilename); } return 0; @@ -588,7 +588,7 @@ flushrc(bbsnnrp) if (bbsnnrp->actdirty == 0) return; bak1 = (char *)strdup((char *)fileglue("%s.BAK", bbsnnrp->activefile)); - if (isfile(bak1)) { + if (dashf(bak1)) { myrename(bak1, (char *)fileglue("%s.BAK.OLD", bbsnnrp->activefile)); } #ifdef USE_MMAP @@ -1169,7 +1169,7 @@ main(argc, argv) if (inputtype == NntpInputType) { server = argv[optind]; active = argv[optind + 1]; - if (isfile(active)) { + if (dashf(active)) { strncpy(BBSNNRP.activefile, active, sizeof BBSNNRP.activefile); } else if (strchr(active, '/') == NULL) { sprintf(BBSNNRP.activefile, "%s/innd/%.*s", BBSHOME, sizeof BBSNNRP.activefile - 7 - strlen(BBSHOME), active); diff --git a/innbbsd/echobbslib.c b/innbbsd/echobbslib.c index b5c23765..44f7739c 100644 --- a/innbbsd/echobbslib.c +++ b/innbbsd/echobbslib.c @@ -243,7 +243,7 @@ initial_bbs(char *outgoing) } while (fscanf(FN, "%s", MYBBSID) != EOF); fclose(FN); - if (!isdir(fileglue("%s/out.going", BBSHOME))) { + if (!dashd(fileglue("%s/out.going", BBSHOME))) { mkdir((char *)fileglue("%s/out.going", BBSHOME), 0750); } if (NONENEWSFEEDS == 0) @@ -616,7 +616,7 @@ myrealloc(void *optr, int size) void testandmkdir(char *dir) { - if (!isdir(dir)) { + if (!dashd(dir)) { char path[MAXPATHLEN + 12]; sprintf(path, "mkdir -p %s", dir); system(path); diff --git a/innbbsd/externs.h b/innbbsd/externs.h index 7fe63b71..f8f52d01 100644 --- a/innbbsd/externs.h +++ b/innbbsd/externs.h @@ -1,14 +1,6 @@ #ifndef EXTERNS_H #define EXTERNS_H -#ifndef ARG -#ifdef __STDC__ -#define ARG(x) x -#else -#define ARG(x) () -#endif -#endif - #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> @@ -19,70 +11,96 @@ #include "his.h" #include "bbs.h" -char *fileglue ARG((char *,...)); -char *ascii_date ARG(()); -char **split ARG((char *, char *)); -char *my_rfc931_name(int, struct sockaddr_in *); +/* file.c */ +char *fileglue (char *, ...); + +/* pmain.c */ +int pmain(char *port); +int p_unix_main(char *); + +/* bbslib.c / echobbslib.c */ +char *ascii_date(); +char **split (char *, char *); +nodelist_t *search_nodelist_bynode(char *node); +newsfeeds_t *search_board(char *board); +int readnffile(char *); +int readnlfile(char *, char *); +void verboselog(char *fmt, ...); +void verboseon(char *); +int isverboselog(void); +void setverboseoff(void); +void setverboseon(void); +void testandmkdir(char *); +char **BNGsplit(char *); + +/* rfc931.c */ +char *my_rfc931_name(int, struct sockaddr_in *); + +/* strdecode.c */ int isreturn(unsigned char); -nodelist_t *search_nodelist_bynode(char *node); -int isfile(char *); void str_decode_M3(unsigned char *str); + +/* inntobbs.c */ int headervalue(char *); -int open_listen(char *, char *, int (*) ARG((int))); -int open_unix_listen(char *, char *, int (*) ARG((int))); +void init_echomailfp(void); +void init_bbsfeedsfp(void); +void bbsfeedslog(char *, int); +void readlines(ClientType *); + +/* connectsock.c */ +int open_listen(char *, char *, int (*) (int)); +int open_unix_listen(char *, char *, int (*) (int)); int unixclient(char *, char *); -int pmain(char *port); void docompletehalt(int); -int p_unix_main(char *); +int inetclient(char *, char *, char *); +int tryaccept(int); +void startfrominetd(int); +void sethaltfunction(int (*)(int)); + +/* innbbsd.c */ int INNBBSDshutdown(void); +void installinnbbsd(void); + +/* his.c */ void HISclose(void); void HISmaint(void); -newsfeeds_t *search_board(char *board); -long filesize(char *); -int inetclient(char *, char *, char *); -int iszerofile(char *); -void init_echomailfp(void); -void init_bbsfeedsfp(void); -int isdir(char *); -int readnffile(char *); -int readnlfile(char *, char *); -int tryaccept(int); -void verboselog(char *fmt,...); -int argify(char *, char ***); -void deargify ARG((char ***)); void mkhistory(char *); -int cancel_article_front(char *); -ncmperm_t *search_issuer(char *); int myHISsetup(char *); -void closeOnExec(int, int); -int dbzwritethrough(int); char *HISfilesfor(datum *, datum *); int myHISwrite(datum *, char *); -void CloseOnExec(int, int); -void verboseon(char *); -daemoncmd_t *searchcmd(char *); void hisincore(int); -void startfrominetd(int); void HISsetup(void); -void installinnbbsd(void); -void sethaltfunction(int (*) (int)); -int innbbsdstartup(void); -int isverboselog(void); +BOOL HISwrite(datum *, long, char *); +void mkhistory(char *); time_t gethisinfo(void); -void setverboseoff(void); -void setverboseon(void); -char *DBfetch(char *); -int storeDB(char *, char *); -void readlines(ClientType *); + +/* daemon.c */ +int argify(char *, char ***); +void deargify (char ***); +daemoncmd_t *searchcmd(char *); + +/* receive_article.c */ +int cancel_article_front(char *); int receive_control(void); + +/* nocem.c */ +ncmperm_t *search_issuer(char *); int receive_nocem(void); + +/* closeonexec.c */ +void closeOnExec(int, int); + +/* dbz.c */ +int dbzwritethrough(int); + +/* dbztool.c */ +char *DBfetch(char *); +int storeDB(char *, char *); + +/* inndchannel.c */ +int innbbsdstartup(void); void clearfdset(int); void channeldestroy(ClientType *); -BOOL HISwrite(datum *, long, char *); -void mkhistory(char *); -void testandmkdir(char *); void feedfplog(newsfeeds_t *, char *, int); -char **BNGsplit(char *); -void bbsfeedslog(char *, int); #endif diff --git a/innbbsd/file.c b/innbbsd/file.c index 29b6384a..c8f4a896 100644 --- a/innbbsd/file.c +++ b/innbbsd/file.c @@ -1,31 +1,10 @@ #include <stdio.h> -#include <sys/stat.h> -#include <sys/types.h> #include <stdarg.h> -#define MAXARGS 100 - -/* - * isfile is called by isfile(filenamecomp1, filecomp2, filecomp3, ..., - * (char *)0); extern "C" int isfile(const char *, const char *[]) ; - */ - - -char FILEBUF[4096]; - - -static char DOLLAR_[8192]; -char * -getstream(fp) - FILE *fp; -{ - return fgets(DOLLAR_, sizeof(DOLLAR_) - 1, fp); -} /* * The same as sprintf, but return the new string * fileglue("%s/%s",home,".newsrc"); */ - char * fileglue(char *fmt,...) { @@ -36,170 +15,3 @@ fileglue(char *fmt,...) va_end(ap); return gluebuffer; } - -long -filesize(filename) - char *filename; -{ - struct stat st; - - if (stat(filename, &st)) - return 0; - return st.st_size; -} - -int -iszerofile(filename) - char *filename; -{ - struct stat st; - - if (stat(filename, &st)) - return 0; - if (st.st_size == 0) - return 1; - return 0; -} - -int -isfile(filename) - char *filename; -{ - struct stat st; - - if (stat(filename, &st)) - return 0; - if (!S_ISREG(st.st_mode)) - return 0; - return 1; -} - -#ifdef TEST -int -isfilev(va_alist) -{ - va_list ap; - struct stat st; - char *p; - va_start(ap); - - FILEBUF[0] = '\0'; - while ((p = va_arg(ap, char *)) != (char *)0) { - strcat(FILEBUF, p); - } - printf("file %s\n", FILEBUF); - - va_end(ap); - return isfile(FILEBUF); -} -#endif - - -int -isdir(filename) - char *filename; -{ - struct stat st; - - if (stat(filename, &st)) - return 0; - if (!S_ISDIR(st.st_mode)) - return 0; - return 1; -} - -#ifdef TEST -int -isdirv(va_alist) -{ - va_list ap; - struct stat st; - char *p; - va_start(ap); - - FILEBUF[0] = '\0'; - while ((p = va_arg(ap, char *)) != (char *)0) { - strcat(FILEBUF, p); - } - - va_end(ap); - return isdir(FILEBUF); -} -#endif - -unsigned long -mtime(filename) - char *filename; -{ - struct stat st; - if (stat(filename, &st)) - return 0; - return st.st_mtime; -} - -#ifdef TEST -unsigned long -mtimev(va_alist) -{ - va_list ap; - struct stat st; - char *p; - va_start(ap); - - FILEBUF[0] = '\0'; - while ((p = va_arg(ap, char *)) != (char *)0) { - strcat(FILEBUF, p); - } - - va_end(ap); - return mtime(FILEBUF); -} -#endif - -unsigned long -atime(filename) - char *filename; -{ - struct stat st; - if (stat(filename, &st)) - return 0; - return st.st_atime; -} - -#ifdef TEST -unsigned long -atimev(va_alist) -{ - va_list ap; - struct stat st; - char *p; - va_start(ap); - - FILEBUF[0] = '\0'; - while ((p = va_arg(ap, char *)) != (char *)0) { - strcat(FILEBUF, p); - } - - va_end(ap); - return atime(FILEBUF); -} -#endif - -/* #undef TEST */ -#ifdef TEST -main(argc, argv) - int argc; - char **argv; -{ - int i; - if (argc > 3) { - if (isfilev(argv[1], argv[2], (char *)0)) - printf("%s %s %s is file\n", argv[1], argv[2], argv[3]); - if (isdirv(argv[1], argv[2], (char *)0)) - printf("%s %s %s is dir\n", argv[1], argv[2], argv[3]); - printf("mtime %d\n", mtimev(argv[1], argv[2], (char *)0)); - printf("atime %d\n", atimev(argv[1], argv[2], (char *)0)); - } - printf("fileglue %s\n", fileglue("%s/%s", "home", ".test")); -} -#endif diff --git a/innbbsd/his.c b/innbbsd/his.c index 9aaa1373..15345575 100644 --- a/innbbsd/his.c +++ b/innbbsd/his.c @@ -64,7 +64,7 @@ mkhistory(srchist) sprintf(newhistpath, "%s.n", srchist); sprintf(newhistdirpath, "%s.n.dir", srchist); sprintf(newhistpagpath, "%s.n.pag", srchist); - if (!isfile(newhistdirpath) || !isfile(newhistpagpath)) { + if (!dashf(newhistdirpath) || !dashf(newhistpagpath)) { makedbz(newhistpath, DEFAULT_HIST_SIZE); } myHISsetup(newhistpath); @@ -119,7 +119,7 @@ HISmaint(void) char maintbuff[4096]; char *ptr; - if (!isfile(HISTORY)) { + if (!dashf(HISTORY)) { makedbz(HISTORY, DEFAULT_HIST_SIZE); } hismaint = fopen(HISTORY, "r"); @@ -140,7 +140,7 @@ HISmaint(void) sprintf(newhistpath, "%s.n", HISTORY); sprintf(newhistdirpath, "%s.n.dir", HISTORY); sprintf(newhistpagpath, "%s.n.pag", HISTORY); - if (!isfile(newhistdirpath)) { + if (!dashf(newhistdirpath)) { makedbz(newhistpath, DEFAULT_HIST_SIZE); } myHISsetup(newhistpath); diff --git a/innbbsd/innbbsconf.h b/innbbsd/innbbsconf.h index dcdc5f21..c24eb309 100644 --- a/innbbsd/innbbsconf.h +++ b/innbbsd/innbbsconf.h @@ -17,9 +17,6 @@ #include <ctype.h> #include <errno.h> #include <time.h> -#ifndef BSD44 -#include <malloc.h> -#endif #include <sys/time.h> #include <sys/stat.h> #include <sys/file.h> @@ -125,12 +122,6 @@ * ARG(x) () # endif # endif */ /* machine dependend */ -#if defined(__linux) -#ifndef LINUX -#define LINUX -#endif -#endif - #if !defined(__svr4__) || defined(sun) #define WITH_TM_GMTOFF #endif diff --git a/innbbsd/innbbsd.c b/innbbsd/innbbsd.c index f43789d2..fc3625ad 100644 --- a/innbbsd/innbbsd.c +++ b/innbbsd/innbbsd.c @@ -85,7 +85,7 @@ void testandmkdir(dir) char *dir; { - if (!isdir(dir)) { + if (!dashd(dir)) { char path[MAXPATHLEN + 12]; sprintf(path, "mkdir -p %s", dir); system(path); diff --git a/innbbsd/inntobbs.c b/innbbsd/inntobbs.c index a83e29b1..b2ca4331 100644 --- a/innbbsd/inntobbs.c +++ b/innbbsd/inntobbs.c @@ -172,7 +172,7 @@ bbsfeedslog(filepath, type) if (bbsfeedson == 0) return; if (bbsfeedson == -1) { - if (!isfile(BBSFEEDS)) { + if (!dashf(BBSFEEDS)) { bbsfeedson = 0; return; } @@ -211,7 +211,7 @@ echomaillog() if (echomaillogon == 0) return; if (echomaillogon == -1) { - if (!isfile(ECHOMAIL)) { + if (!dashf(ECHOMAIL)) { echomaillogon = 0; return; } diff --git a/innbbsd/nocem.c b/innbbsd/nocem.c index 52ac26d0..e8fb3a24 100644 --- a/innbbsd/nocem.c +++ b/innbbsd/nocem.c @@ -207,7 +207,7 @@ NCMupdate(char *issuer, char *type) char buff[LINELEN]; sprintf(buff, "%s/ncmperm.bbs", INNDHOME); - if (!isfile(buff)) + if (!dashf(buff)) { if ((fp = fopen(buff, "w")) == NULL) { diff --git a/innbbsd/receive_article.c b/innbbsd/receive_article.c index d0f02d7b..627db083 100644 --- a/innbbsd/receive_article.c +++ b/innbbsd/receive_article.c @@ -445,12 +445,12 @@ receive_article() goto boardcont; } boardhome = (char *)fileglue("%s/boards/%c/%s", BBSHOME, boardptr[0], boardptr); - if (!isdir(boardhome)) { + if (!dashd(boardhome)) { bbslog(":Err: unable to write %s\n", boardhome); } else { char *fname; /* - * if ( !isdir( boardhome )) { bbslog( ":Err: unable to write + * if ( !dashd( boardhome )) { bbslog( ":Err: unable to write * %s\n",boardhome); testandmkdir(boardhome); } */ fname = (char *)post_article(boardhome, userid, boardptr, @@ -510,7 +510,7 @@ receive_control(void) boardhome = (char *)fileglue("%s/boards/c/control", BBSHOME); testandmkdir(boardhome); *firstpath = '\0'; - if (isdir(boardhome)) { + if (dashd(boardhome)) { fname = (char *)post_article(boardhome, FROM, "control", bbspost_write_control, NULL, firstpath); if (fname != NULL) { if (firstpath[0] == '\0') @@ -573,7 +573,7 @@ cancel_article_front(msgid) } sprintf(filename, "%s/boards/%c/%s", BBSHOME, file[0], file); bbslog("cancel post %s\n", filename); - if (isfile(filename)) { + if (dashf(filename)) { FILE *fp = fopen(filename, "r"); char buffer[1024]; char xfrom0[100], xfrom[100], xpath[1024]; @@ -608,7 +608,7 @@ cancel_article_front(msgid) bbslog("cancel post %s\n", filename); boardhome = (char *)fileglue("%s/boards/d/deleted", BBSHOME); testandmkdir(boardhome); - if (isdir(boardhome)) { + if (dashd(boardhome)) { char subject[1024]; char *fname; if (POSTHOST) { |