This is ProcessReport.c in view mode; [Download] [Up]
#include <stdio.h> #define REPORT "report" #define OVER "over" #define LOW "low" #define LOG "log" #define MAIL "mail" #define LOWMIN 90 FILE *log; int domail; main(argc,argv) int argc; char *argv[]; { FILE *fopen(), *rfp, *ofp, *lfp; char user[20]; float quota, usage, pcnt; int ip, i; domail = 1; for (i = 1; i < argc; i++) { if (!strcmp(argv[i],"-m")) domail = 0; } log = fopen(LOG,"a"); if (log == NULL) { fprintf(stderr,"%s: can't open log file: %s\n",argv[0],LOG); exit(1); } rfp = fopen(REPORT,"r"); if (rfp == NULL) { fprintf(log,"can't open quota report file: %s\n",REPORT); exit(1); } ofp = fopen(OVER,"w"); if (ofp == NULL) { fprintf(log,"can't open quota over file: %s\n",OVER); exit(1); } lfp = fopen(LOW,"w"); if (lfp == NULL) { fprintf(log,"can't open quota low file: %s\n",LOW); exit(1); } while (fscanf(rfp,"%s %f %f",user,"a,&usage) > 0) { pcnt = usage / quota * 100.0; ip = pcnt; if (ip > 100) { fprintf(ofp,"%s %g %g %d%%\n",user,quota,usage,ip); OverQuota(user,quota,usage); } if (ip >= LOWMIN && ip <= 100) { fprintf(lfp,"%s %g %g %d%%\n",user,quota,usage,ip); LowQuota(user,quota,usage); } } fclose(rfp); fclose(ofp); fclose(lfp); fclose(log); exit(0); } OverQuota(user,quota,usage) char *user; float quota, usage; { FILE *fopen(), *mfp; char str[64]; mfp = fopen(MAIL,"w"); if (mfp == NULL) { fprintf(log,"can't write mail file: %s\n",MAIL); exit(1); } fprintf(mfp,"Warning! Your disk usage is %g Kbytes, which exceeds\n",usage); fprintf(mfp,"your quota of %g Kbytes. Please reduce your usage\n",quota); fprintf(mfp,"by removing unnecessary files. If your usage continues\n"); fprintf(mfp,"to exceed your quota, your account may be disabled.\n"); fprintf(mfp,"\n"); fprintf(mfp,"Note! If you drop files into the Recycler, you should\n"); fprintf(mfp,"select the \"Empty Recycler\" item from the Workspace\n"); fprintf(mfp,"\"File\" menu to actually get rid of them.\n"); fprintf(mfp,"\n"); fprintf(mfp,"---\n"); fprintf(mfp,"The Accounting System\n"); fclose(mfp); sprintf(str,"mail -s \"Disk usage\" %s < %s",user,MAIL); if (domail) system(str); return(0); } LowQuota(user,quota,usage) char *user; float quota, usage; { FILE *fopen(), *mfp; char str[64]; mfp = fopen(MAIL,"w"); if (mfp == NULL) { fprintf(log,"can't write mail file: %s\n",MAIL); exit(1); } fprintf(mfp,"Warning! Your disk usage is %g Kbytes, which is close to\n",usage); fprintf(mfp,"your quota of %g Kbytes. Consider reducing your usage\n",quota); fprintf(mfp,"by removing unnecessary files.\n"); fprintf(mfp,"\n"); fprintf(mfp,"Note! If you drop files into the Recycler, you should\n"); fprintf(mfp,"select the \"Empty Recycler\" item from the Workspace\n"); fprintf(mfp,"\"File\" menu to actually get rid of them.\n"); fprintf(mfp,"\n"); fprintf(mfp,"---\n"); fprintf(mfp,"The Accounting System\n"); fclose(mfp); sprintf(str,"mail -s \"Disk usage\" %s < %s",user,MAIL); if (domail) system(str); return(0); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.