#include #include #include #include #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,...) { va_list ap; static char gluebuffer[8192]; va_start(ap, fmt); vsprintf(gluebuffer, fmt, ap); 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