X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lib-src%2Fyow.c;h=934f97685d3126391c3f6ad0e7ffbbe0e7a8c4c5;hb=09a07def47c0529de7113b5ac677f8b52b9627a7;hp=ce4d1a05f83a3b10a1708de58cd027db96648a2e;hpb=539a21ad7ca6e273390daf409e14d1572b6405cb;p=sxemacs diff --git a/lib-src/yow.c b/lib-src/yow.c index ce4d1a0..934f976 100644 --- a/lib-src/yow.c +++ b/lib-src/yow.c @@ -1,9 +1,9 @@ /* * yow.c - * + * * Print a quotation from Zippy the Pinhead. * Qux March 6, 1986 - * + * * With dynamic memory allocation. */ @@ -12,6 +12,7 @@ #define DONT_ENCAPSULATE #include +#include #include #include #include <../src/sxe-paths.h> /* For PATH_DATA. */ @@ -30,33 +31,42 @@ #define YOW_FILE "yow.lines" #endif -void yow(FILE * fp); -void setup_yow(FILE * fp); +static void yow(FILE * fp); +static void setup_yow(FILE * fp); -int main(int argc, char *argv[]) +#define xstrncpy(d_,s_,l_) \ + do { \ + char* dst_=d_; \ + dst_[0]='\0'; \ + strncat((dst_),(s_),(l_)-1); \ + } while(0) + + +int +main(int argc, char *argv[]) { FILE *fp; char file[BUFSIZ]; if (argc > 2 && !strcmp(argv[1], "-f")) { - strncpy(file, argv[2], sizeof(file)-1); - file[sizeof(file)-1]='\0'; - } else + assert(argv[2] != NULL); + xstrncpy(file, argv[2], sizeof(file)); + } else { #ifdef PATH_DATA #ifdef vms - sprintf(file, "%s%s", PATH_DATA, YOW_FILE); + int sz = snprintf(file, sizeof(file), "%s%s", PATH_DATA, YOW_FILE); #else - sprintf(file, "%s/%s", PATH_DATA, YOW_FILE); + int sz = snprintf(file, sizeof(file), "%s/%s", PATH_DATA, YOW_FILE); #endif + assert(sz>=0 && sz