X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lib-src%2Fyow.c;h=934f97685d3126391c3f6ad0e7ffbbe0e7a8c4c5;hb=09a07def47c0529de7113b5ac677f8b52b9627a7;hp=a644f07ca2c747d9818d8adad9c07aa2edcd6767;hpb=462c50ec0075de2f03c03a60f1f780ff7b024a86;p=sxemacs diff --git a/lib-src/yow.c b/lib-src/yow.c index a644f07..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. */ @@ -33,6 +34,14 @@ static void yow(FILE * fp); static void setup_yow(FILE * fp); +#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[]) { @@ -40,25 +49,24 @@ main(int argc, char *argv[]) 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 int sz = snprintf(file, sizeof(file), "%s%s", PATH_DATA, YOW_FILE); #else - int sz = snprintf(file, sizeof(file), "%s/%s", PATH_DATA, YOW_FILE); + int sz = snprintf(file, sizeof(file), "%s/%s", PATH_DATA, YOW_FILE); #endif assert(sz>=0 && sz