]> code.delx.au - gnu-emacs/blobdiff - lib-src/yow.c
(search_file_line, set_bdf_font_info, seek_char)
[gnu-emacs] / lib-src / yow.c
index bfff0e7d3ea3a594e1ff76aba7451b5041f1e774..4efe8153415132b7e22c5a0f3848a1ab722e9a76 100644 (file)
@@ -3,13 +3,16 @@
  * 
  * Print a quotation from Zippy the Pinhead.
  * Qux <Kaufman-David@Yale> March 6, 1986
+ *
+ * This file is in the public domain because the author published it
+ * with no copyright notice before the US signed the Bern Convention.
  * 
  * With dynamic memory allocation.
  */
 
 #include <stdio.h>
 #include <ctype.h>
-#include "../src/paths.h"      /* For PATH_EXEC.  */
+#include <../src/epaths.h>      /* For PATH_DATA.  */
 
 #define BUFSIZE  80
 #define SEP      '\0'
 #define YOW_FILE "yow.lines"
 #endif
 
+#ifdef MSDOS
+#define rootrelativepath(rel) \
+({\
+    static char res[BUFSIZE], *p;\
+    strcpy (res, argv[0]);\
+    p = res + strlen (res);\
+    while (p != res && *p != '/' && *p != '\\' && *p != ':') p--;\
+    strcpy (p + 1, "../");\
+    strcpy (p + 4, rel);\
+    &res;})
+#endif
+
+char *malloc(), *realloc();
+
+void yow();
+void setup_yow();
+
+int
 main (argc, argv)
      int argc;
      char *argv[];
 {
   FILE *fp;
   char file[BUFSIZ];
-  void yow(), setup_yow();
 
   if (argc > 2 && !strcmp (argv[1], "-f"))
     strcpy (file, argv[2]);
   else
 #ifdef vms
-    sprintf (file, "%s%s", PATH_EXEC, YOW_FILE);
+    sprintf (file, "%s%s", PATH_DATA, YOW_FILE);
 #else
-    sprintf (file, "%s/%s", PATH_EXEC, YOW_FILE);
+    sprintf (file, "%s/%s", PATH_DATA, YOW_FILE);
 #endif
 
   if ((fp = fopen(file, "r")) == NULL) {
+    fprintf(stderr, "yow: ");
     perror(file);
     exit(1);
   }
@@ -46,7 +67,7 @@ main (argc, argv)
   setup_yow(fp);
   yow(fp);
   fclose(fp);
-  exit(0);
+  return 0;
 }
 
 static long len = -1;
@@ -67,7 +88,7 @@ setup_yow(fp)
    * we explicitly skip that. */
   while ((c = getc(fp)) != SEP) {
     if (c == EOF) {
-      fprintf(stderr, "File contains no separators.\n");
+      fprintf(stderr, "yow: file contains no separators\n");
       exit(2);
     }
   }
@@ -76,7 +97,7 @@ setup_yow(fp)
     header_len -= AVG_LEN;     /* allow the first quotation to appear */
        
   if (fseek(fp, 0L, 2) == -1) {
-    perror("fseek 1");
+    perror("yow");
     exit(1);
   }
   len = ftell(fp) - header_len;
@@ -92,16 +113,15 @@ yow (fp)
   int c, i = 0;
   char *buf;
   unsigned int bufsize;
-  char *malloc(), *realloc();
 
   offset = rand() % len + header_len;
   if (fseek(fp, offset, 0) == -1) {
-    perror("fseek 2");
+    perror("yow");
     exit(1);
   }
 
   /* Read until SEP, read next line, print it.
-     (Note that we will never print anything before the first seperator.)
+     (Note that we will never print anything before the first separator.)
      If we hit EOF looking for the first SEP, just recurse. */
   while ((c = getc(fp)) != SEP)
     if (c == EOF) {
@@ -121,7 +141,7 @@ yow (fp)
   bufsize = BUFSIZE;
   buf = malloc(bufsize);
   if (buf == (char *)0) {
-    fprintf(stderr, "can't allocate any memory\n");
+    fprintf(stderr, "yow: virtual memory exhausted\n");
     exit (3);
   }
 
@@ -134,7 +154,7 @@ yow (fp)
       bufsize *= 2;
       buf = realloc(buf, bufsize);
       if (buf == (char *)0) {
-       fprintf(stderr, "can't allocate more memory\n");
+       fprintf(stderr, "yow: virtual memory exhausted\n");
        exit (3);
       }
     }