home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <ctype.h>
- #include <stdlib.h>
- #include <time.h>
-
- extern int getpid();
-
- #define MSGDIR "/var/spool/pager"
-
- int main(argc, argv)
- int argc;
- char **argv;
- {
- int i;
- char buffer1[1024];
- char buffer2[1024];
- char number[33];
- char message[161];
- int mypid = getpid();
- FILE *fh;
-
- if (argc != 3)
- {
- fprintf(stderr, "Usage: %s <phone number> \"<message>\"\n", argv[0]);
- exit(1);
- }
-
- for(i=0; argv[1][i] != 0; i++)
- {
- if (!isdigit(argv[1][i]))
- {
- fprintf(stderr, "%s: The phone number must only contain digits.\n", argv[0]);
- exit(1);
- }
- }
-
- if (argv[1][0] == '0')
- {
- strcpy(number, "44");
- strcat(number, argv[1]+1);
- }
- else
- {
- strcpy(number, argv[1]);
- }
-
- if (i > 32)
- {
- fprintf(stderr, "%s: The phone number must be less than 32 digits\n", argv[0]);
- exit(1);
- }
-
- if (strlen(argv[2]) >= 160)
- {
- fprintf(stderr, "%s: The message must be less than 160 characters long\n", argv[0]);
- exit(1);
- }
-
- for(i=0; argv[2][i] != 0; i++)
- {
- if (iscntrl(argv[2][i]))
- message[i] = ' ';
- else
- message[i] = argv[2][i];
- }
- message[i] = 0;
-
- sprintf(buffer1, "%s/.%d", MSGDIR, mypid);
- sprintf(buffer2, "%s/%06d%08lx", MSGDIR, mypid, time(0));
-
- fh = fopen(buffer1, "w");
-
- if (fh == NULL)
- {
- fprintf(stderr, "%s: Could not open message output file\n", argv[0]);
- exit(1);
- }
-
- fprintf(fh, "%s\n%s\n", number, message);
-
- fclose(fh);
-
- if (rename(buffer1, buffer2) < 0)
- {
- perror("Rename failed");
- exit(1);
- }
-
- return 0;
- }
-