home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / MYBBS.ZIP / WINDOWS / DESKTOP / MYBBS / WWIVSOR.ZIP / SKELETON.C < prev    next >
C/C++ Source or Header  |  1994-09-04  |  8KB  |  234 lines

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <io.h>
  4. #include <fcntl.h>
  5. #include <dos.h>
  6. #include <stdlib.h>
  7. #include <ctype.h>
  8.  
  9. #define v407                   /* Sets for WWIV v4.07 or later */
  10.  
  11. int debuglevel=0;
  12.  
  13. int incom;
  14. unsigned int  usernum,         /* user number for the user */
  15.               system_number=0, /* WWIV Node Number - 0=not networked */
  16.               okansi,          /* non-zero if user can support ANSI */
  17.               screenchars,     /* chars/line user has specified */
  18.               screenlines,     /* lines/screen user has specified */
  19.               sl,              /* sec lev for user (0-255) */
  20.               so,              /* non-zero if user is sysop (sl=255) */
  21.               cs,              /* non-zero if user is co-sysop */
  22.               age,             /* age of the user */
  23.               uploaded=0,      /* # files uploaded */
  24.               downloaded=0,    /* # files downloaded */
  25.               comport,         /* com port user is on */
  26.               com_speed=0,     /* com port baud rate */
  27.               modem_speed=0;   /* modem baud rate */
  28. unsigned char name[31],        /* name/alias of user */
  29.               realname[31],    /* real name of user */
  30.               callsign[9],     /* amateur radio callsign of user */
  31.               laston[9],       /* date user was last on */
  32.               sex,             /* sex of user, M or F */
  33.               parity[5],       /* parity 8N1 or 7E1 */
  34.               curspeed[81],    /* speed user is on at, "KB" if local */
  35.               data[81],        /* directory for non-text files, ends in \ */
  36.               gfiles[81],      /* directory for text files, ends in \ */
  37.               syslog[81],      /* full path & filename for sysop log */
  38.               sysopname[81],   /* name of sysop */
  39.               systemname[81];  /* name of BBS */
  40. double        gold,            /* gold user has */
  41.               timeallowed,     /* number of seconds before user logged off */
  42.               version=-1.0;    /* version of WWIV running under */
  43. long          timeon=0,        /* number of seconds since midnight logged on */
  44.               timespent=0,     /* number of seconds spent online so far */
  45.               uk=0,            /* # k uploaded */
  46.               dk=0;            /* # k downloaded */
  47.  
  48. #ifdef v407
  49. void far * far *funcs;
  50. void far interrupt (*inli)(char far *, char far *, int, int);
  51. void far interrupt (*checka)(int far *, int far *);
  52. void far interrupt (*pla)(char far *, int far *);
  53. void far interrupt (*outchr)(char);
  54. void far interrupt (*outstr)(char far *);
  55. void far interrupt (*nl)();
  56. void far interrupt (*pl)(char far *);
  57. int  far interrupt (*empty)();
  58. char far interrupt (*inkey)();
  59. unsigned char far interrupt (*getkey)();
  60. void far interrupt (*input)(char far *, int);
  61. void far interrupt (*inputl)(char far *, int);
  62. int  far interrupt (*yn)();
  63. int  far interrupt (*ny)();
  64. void far interrupt (*ansic)(int);
  65. char far interrupt (*onek)(char far *);
  66. void far interrupt (*prt)(int, char far *);
  67. void far interrupt (*mpl)(int);
  68. #endif
  69.  
  70.  
  71. int read_in_data(char *fn)
  72. {
  73.   char buf[1024],*ptr[50],*ss;
  74.   float fl;
  75.   int i,i1,len;
  76.   unsigned short c_s,c_o;
  77.  
  78.   ss=getenv("BBS");
  79.   if (!ss || strncmp(ss,"WWIV",4)) {
  80. #ifdef v407
  81.     printf("\nThis program MUST be run under WWIV v4.07 or later.\n");
  82.     exit(1);
  83. #else
  84.     printf("\nWARNING: Not running under WWIV\n");
  85.     return(1);
  86. #endif
  87.   }
  88.   for(i=i1=0;i1<strlen(ss);i1++) {
  89.     if (!isdigit(ss[i1])) continue;
  90.     i*=10;
  91.     i+=ss[i1]-'0';
  92.   }
  93.   version=((double)i)/100.0;
  94. #ifdef v407
  95.   if (i<407) {
  96.     printf("\nThis program requires WWIV v4.07 or later.\n");
  97.     exit(2);
  98.   }
  99.   if (i<421) funcs=(void far *)getvect(0x6a);
  100.   else {
  101.     ss=getenv("WWIV_FP");
  102.     if (!ss) {
  103.       printf("\nWWIV_FP enviornment variable not set.\n\n");
  104.       exit(3);
  105.     }
  106.     c_s=strtol(ss,NULL,16);
  107.     c_o=strtol(ss+5,NULL,16);
  108.     if (c_s && c_o) funcs=(void far *)MK_FP(c_s,c_o);
  109.     else {
  110.       printf("\nWWIV_FP not set to valid value (%04lX:%04lX).\n\n",c_s,c_o);
  111.       exit(4);
  112.     }
  113.   }
  114.   inli=funcs[0];
  115.   checka=funcs[1];
  116.   pla=funcs[2];
  117.   outchr=funcs[3];
  118.   outstr=funcs[4];
  119.   nl=funcs[5];
  120.   pl=funcs[8];
  121.   empty=funcs[9];
  122.   inkey=funcs[10];
  123.   getkey=funcs[11];
  124.   input=funcs[12];
  125.   inputl=funcs[13];
  126.   yn=funcs[14];
  127.   ny=funcs[15];
  128.   ansic=funcs[16];
  129.   onek=funcs[17];
  130.   prt=funcs[18];
  131.   mpl=funcs[19];
  132. #endif
  133.   if ((i=open(fn,O_RDONLY|O_BINARY))<0) return(i);
  134.   len=read(i,(void *)buf,1024);
  135.   close(i);
  136.   for (i=i1=0;i<len;i++)
  137.     if (buf[i]=='\r') {
  138.       buf[i]=0;
  139.       ptr[++i1]=&buf[i+2];
  140.     }
  141.   ptr[0]=buf;
  142.   for (i=i1;i<50;i++) ptr[i]=NULL;
  143.   while (*ptr[6]==' ') ++(ptr[6]);
  144.   while (*ptr[15]==' ') ++(ptr[15]);
  145. #ifdef DEBUG
  146.   printf("%2u Parameters:\n",i1);
  147.   for(i=0;i<i1;i++) printf("Parameter %2u: \"%s\"\n",i,ptr[i]);
  148. #endif
  149.   usernum=atoi(ptr[0]);
  150.   strcpy(name,ptr[1]);
  151.   strcpy(realname,ptr[2]);
  152.   strcpy(callsign,ptr[3]);
  153.   age=atoi(ptr[4]);
  154.   sex=*ptr[5];
  155.   sscanf(ptr[6],"%f",&fl);
  156.   gold=(double)fl;
  157.   strcpy(laston,ptr[7]);
  158.   screenchars=atoi(ptr[8]);
  159.   screenlines=atoi(ptr[9]);
  160.   sl=atoi(ptr[10]);
  161.   so=atoi(ptr[11]);
  162.   cs=atoi(ptr[12]);
  163.   okansi=atoi(ptr[13]);
  164.   incom=atoi(ptr[14]);
  165.   sscanf(ptr[15],"%f",&fl);
  166.   timeallowed=(double)fl;
  167.   strcpy(gfiles,ptr[16]);
  168.   strcpy(data,ptr[17]);
  169.   sprintf(syslog,"%s%s",gfiles,ptr[18]);
  170.   strcpy(curspeed,ptr[19]);
  171.   if (curspeed[0]!='K') modem_speed=atoi(curspeed);
  172.   comport=atoi(ptr[20]);
  173.   strcpy(systemname,(ptr[21]!=NULL)?ptr[21]:"");
  174.   strcpy(sysopname,(ptr[22]!=NULL)?ptr[22]:"");
  175.   if (ptr[23]!=NULL) timeon=atol(ptr[23]);
  176.   if (ptr[24]!=NULL) timespent=atol(ptr[24]);
  177.   if (ptr[25]!=NULL) uk=atol(ptr[25]);
  178.   if (ptr[26]!=NULL) uploaded=atol(ptr[26]);
  179.   if (ptr[27]!=NULL) dk=atol(ptr[27]);
  180.   if (ptr[28]!=NULL) downloaded=atol(ptr[28]);
  181.   strcpy(parity,(ptr[29]!=NULL)?ptr[29]:"");
  182.   if (ptr[30]!=NULL) com_speed=atol(ptr[30]);
  183.   if (ptr[31]!=NULL) system_number=atol(ptr[31]);
  184.   return(0);
  185. }
  186.  
  187. void main(int argc, char *argv[])
  188. {
  189.   int rc;
  190.   char s[81];
  191.  
  192.   strcpy(s,(argc<2)?"CHAIN.TXT":argv[1]);
  193.   if ((rc=read_in_data(s)) != 0) {
  194.     printf("\nData file not found (RC=%d)\n\n",rc);
  195.     abort();
  196.   }
  197.   printf("user #%d\n",usernum);
  198.   printf("username %s\n",name);
  199.   printf("realname %s\n",realname);
  200.   printf("callsign %s\n",callsign);
  201.   printf("age %d\n",age);
  202.   printf("sex %c\n",sex);
  203.   printf("gold %f\n",gold);
  204.   printf("laston %s\n",laston);
  205.   printf("screensize %dx%d\n",screenchars,screenlines);
  206.   printf("sl %d\n",sl);
  207.   printf("sysop %s\n",so?"Yes":"No");
  208.   printf("cosysop %s\n",cs?"Yes":"No");
  209.   printf("ansi %s\n",okansi?"Yes":"No");
  210.   printf("incom %s\n",incom?"Yes":"No");
  211.   printf("timeallowed %f\n",timeallowed);
  212.   printf("gfiles %s\n",gfiles);
  213.   printf("data %s\n",data);
  214.   printf("syslog %s\n",syslog);
  215.   printf("curspeed %s\n",curspeed);
  216.   printf("com port %d\n",comport);
  217.   printf("systemname %s\n",systemname);
  218.   printf("sysopname %s\n",sysopname);
  219.   printf("timeon %ld\n",timeon);
  220.   printf("timespent %ld\n",timespent);
  221.   printf("uk %ld\n",uk);
  222.   printf("uploaded %d\n",uploaded);
  223.   printf("dk %ld\n",dk);
  224.   printf("downloaded %d\n",downloaded);
  225.   printf("parity %s\n",parity);
  226.   printf("com_speed %u\n",com_speed);
  227.   printf("modem_speed %u\n",modem_speed);
  228.   printf("system_number %u\n",system_number);
  229. #ifdef v407
  230.   sprintf(s,"Running under WWIV v%4.2f.",version);
  231.   pl(s);
  232. #endif
  233. }
  234.