BSD 4_2 release
[unix-history] / usr / src / usr.bin / xsend / xget.c
index 93b06aa..7dfa040 100644 (file)
@@ -1,14 +1,19 @@
+#ifndef lint
+static char sccsid[] = "@(#)xget.c     4.4 6/30/83";
+#endif
+
 #include "xmail.h"
 #include "xmail.h"
-#include "sys/types.h"
-#include "sys/dir.h"
-#include "ctype.h"
-#include "pwd.h"
-#include "sys/stat.h"
+#include <sys/types.h>
+#include <sys/dir.h>
+#include <ctype.h>
+#include <pwd.h>
+#include <sys/stat.h>
 char *myname;
 int uid;
 char *myname;
 int uid;
-struct direct dbuf;
+struct direct *dbuf;
 char *maildir = "/usr/spool/secretmail/";
 char *maildir = "/usr/spool/secretmail/";
-FILE *kf, *mf, *df;
+FILE *kf, *mf;
+DIR *df;
 MINT *x, *b, *one, *t45, *z, *q, *r;
 MINT *two, *t15, *mbuf;
 char buf[256], line[128];
 MINT *x, *b, *one, *t45, *z, *q, *r;
 MINT *two, *t15, *mbuf;
 char buf[256], line[128];
@@ -18,8 +23,9 @@ struct stat stbuf;
 main()
 {      int i;
        char *p;
 main()
 {      int i;
        char *p;
+
        uid = getuid();
        uid = getuid();
-       myname = getlogin();
+       myname = (char *)getlogin();
        if(myname == NULL)
                myname = getpwuid(uid)->pw_name;
        comminit();
        if(myname == NULL)
                myname = getpwuid(uid)->pw_name;
        comminit();
@@ -64,8 +70,8 @@ main()
                case 'n':
                case 'd':
                case '\n':
                case 'n':
                case 'd':
                case '\n':
-                       unlink(line);
                        fclose(mf);
                        fclose(mf);
+                       unlink(line);
                        break;
                case '!':
                        system(buf+1);
                        break;
                case '!':
                        system(buf+1);
@@ -76,19 +82,29 @@ main()
                        rewind(mf);
                        if(buf[1] == '\n' || buf[1] == '\0')
                                strcpy(buf, "s mbox\n");
                        rewind(mf);
                        if(buf[1] == '\n' || buf[1] == '\0')
                                strcpy(buf, "s mbox\n");
-                       for(p=buf; !isspace(*p); p++);
-                       for(; isspace(*p); p++);
+                       for(p = buf+1; isspace(*p); p++);
                        p[strlen(p)-1] = 0;
                        kf = fopen(p, "a");
                        if(kf == NULL)
                        {       perror(p);
                        p[strlen(p)-1] = 0;
                        kf = fopen(p, "a");
                        if(kf == NULL)
                        {       perror(p);
-                               break;
+                               goto cmnd;
                        }
                        decipher(mf, kf);
                        fclose(mf);
                        fclose(kf);
                        unlink(line);
                        break;
                        }
                        decipher(mf, kf);
                        fclose(mf);
                        fclose(kf);
                        unlink(line);
                        break;
+               default:
+                       printf("Commands are:\n");
+                       printf("q       quit, leaving unread messages\n");
+                       printf("n       delete current message and goto next\n");
+                       printf("d       same as above\n");
+                       printf("\\n     same as above\n");
+                       printf("!       execute shell command\n");
+                       printf("s       save message in the named file or mbox\n");
+                       printf("w       same as above\n");
+                       printf("?       prints this list\n");
+                       goto cmnd;
                }
        }
        exit(0);
                }
        }
        exit(0);
@@ -99,22 +115,21 @@ icmp(a, b) int *a, *b;
 }
 files()
 {      int i;
 }
 files()
 {      int i;
-       if((df = fopen(maildir, "r")) == NULL)
+       if((df = opendir(maildir)) == NULL)
        {       perror(maildir);
                exit(1);
        }
        strcpy(line, myname);
        strcat(line, ".%d");
        {       perror(maildir);
                exit(1);
        }
        strcpy(line, myname);
        strcat(line, ".%d");
-       for(; !feof(df);)
-       {       fread(&dbuf, sizeof(dbuf), 1, df);
-               if(feof(df)) break;
-               if(dbuf.d_ino == 0) continue;
-               if(sscanf(dbuf.d_name, line, &i) != 1)
+       while ((dbuf = readdir(df)) != NULL) 
+       {
+               if(sscanf(dbuf->d_name, line, &i) != 1)
                        continue;
                if(fcnt >= MXF)
                        break;
                fnum[fcnt++] = i;
        }
                        continue;
                if(fcnt >= MXF)
                        break;
                fnum[fcnt++] = i;
        }
+       closedir(df);
        if(fcnt == 0)
        {       printf("no secret mail\n");
                exit(0);
        if(fcnt == 0)
        {       printf("no secret mail\n");
                exit(0);