Beispiel #1
0
VOID FIDOSDM::SetHWM (ULONG ulMsg)
{
   int fd;
   CHAR Temp[128];
   struct dosdate_t d_date;
   struct dostime_t d_time;
   FIDOMSG Hdr;

   sprintf (Temp, "%s1.msg", BasePath);
   if ((fd = sopen (Temp, O_WRONLY|O_BINARY|O_CREAT|O_TRUNC, SH_DENYNO, S_IREAD|S_IWRITE)) != -1) {
      memset (&Hdr, 0, sizeof (FIDOMSG));
      strcpy (Hdr.From, "MsgBase");
      strcpy (Hdr.To, "Nobody in particular");
      strcpy (Hdr.Subject, "Re: Whatsa high water mark?");
      _dos_getdate (&d_date);
      _dos_gettime (&d_time);
      sprintf (Hdr.Date, "%2d %3.3s %02d  %02d:%02d:%02d", d_date.day, fidoMonths[d_date.month - 1], d_date.year % 100, d_time.hour, d_time.minute, d_time.second);
      Hdr.Up = (USHORT)ulMsg;
      Hdr.Attrib = MSGPRIVATE|MSGSENT|MSGREAD;
      write (fd, &Hdr, sizeof (FIDOMSG));
      strcpy (Temp, "\r\nThis message is used to store the high water mark\r\n");
      write (fd, Temp, strlen (Temp) + 1);
      close (fd);
   }
}
Beispiel #2
0
DWORD   _Day1970 ()
{
    static  struct _dosdate_t ddate;
    _dos_getdate (&ddate);
    return (((ddate.year - 1970) * 365) + ((ddate.year - 1968) / 4)
        + (DayOfYear (ddate.month, ddate.day, ddate.year) - 1));
}
Beispiel #3
0
char *curDateLong(void)
{
	struct dosdate_t d;
	char *date, *h, *p;

	_dos_getdate(&d);

	if((date = nls_makedate(0, d.year, d.month, d.day)) == 0) {
		error_out_of_memory();
		return 0;
	}

	if((h = getString(TEXT_WEEKDAY_SHORT_NAME_SUNDAY + d.dayofweek)) == 0) {
		free(date);
		error_out_of_memory();
		return 0;
	}

	if((p = realloc(h, strlen(h) + strlen(date) + 2)) == 0) {
		free(h);
		free(date);
		error_out_of_memory();
		return 0;
	}

	strcpy(stpcat(p, " "), date);
	free(date);

	return p;
}
Beispiel #4
0
void main()
  {
    struct dosdate_t date;
    struct dostime_t time;

    /* Get and display the current date and time */
    _dos_getdate( &date );
    _dos_gettime( &time );
    printf( "The date (MM-DD-YYYY) is: %d-%d-%d\n",
        date.month, date.day, date.year );
    printf( "The time (HH:MM:SS) is: %.2d:%.2d:%.2d\n",
        time.hour, time.minute, time.second );

    /* Change it to the turn of the century */
    date.year = 1999;
    date.month = 12;
    date.day = 31;
    time.hour = 23;
    time.minute = 59;
    _dos_setdate( &date );
    _dos_settime( &time );
    printf( "New date (MM-DD-YYYY) is: %d-%d-%d\n",
                  date.month, date.day, date.year );
    printf( "New time (HH:MM:SS) is: %.2d:%.2d:%.2d\n",
                  time.hour, time.minute, time.second );
  }
Beispiel #5
0
int parsedate(char *s)
{
  struct dosdate_t d;
  unsigned char leap;
  int nums[3],
    items;

  assert(s);

  /* Parse at maximum three numbers */
  s = parsenum(s, 3, &items, nums);

  if (!s || *s)                 /* general error or too many characters */
    return 0;

  _dos_getdate(&d);             /* fetch current info */
  switch (items)
  {
    case 0:                    /* empty line --> always OK */
      return 1;

    case 1:                    /* single number --> day only */
      d.day = nums[0];
      break;

    case 3:                    /* three numbers --> year, month & day */
      d.year = nums[2];
      /* fall through */

    case 2:                    /* two numbers --> month & day */
      d.day = nums[1], d.month = nums[0];
      break;
  }

  /* if only entered two digits for year, assume 1900's */
  if (d.year <= 99)
    d.year += 1900;

  leap = (!(d.year % 4) && (d.year % 100)) || !(d.year % 400);

  if ((d.month >= 1 && d.month <= 12) &&
      (d.day >= 1 && d.day <= months[leap][d.month]) &&
      (d.year >= 1980 && d.year <= 2099))
  {
    _dos_setdate(&d);
    return 1;
  }

  return 0;
}
void main(void)
{
	//clrscr();
	struct dostime_t t;
	struct dosdate_t d;

	do{
		clrscr();
		_dos_gettime(&t);
		_dos_getdate(&d);
		printf("the current date is %02d-%02d-%02d\n",d.day,d.month,d.year);
		printf("the current time is %02d:%02d:%02d:%02d\n",t.hour,t.minute,t.second,t.hsecond);
		delay(1);
	}while(!kbhit());

}
Beispiel #7
0
 /* DATE DATE DATE DATE DATE DATE DATE DATE DATE DATE DATE DATE DATE */
 #include <dos.h>   /* for following date functions only */
 void what_date()
  {
      /*   Watcom   */         
      struct dosdate_t adate;
      _dos_getdate( &adate );
      this_month = adate.month;
      this_year = adate.year;
      
     /*   Borland
     struct date adate;
     getdate( &adate );
     this_month = adate.da_mon;
     this_year = adate.da_year;
     */         
      return;
  }
Beispiel #8
0
USHORT TUser::Age ()
{
   USHORT RetVal = 0;
   struct dosdate_t d_date;

   _dos_getdate (&d_date);

   if (BirthDay != 0 && BirthMonth != 0 && BirthYear > 1880 && BirthYear < d_date.year) {
      RetVal = (USHORT)(d_date.year - BirthYear);
      if (d_date.month < BirthMonth)
         RetVal--;
      else if (d_date.month == BirthMonth && d_date.day < BirthDay)
         RetVal--;
   }

   return (RetVal);
}
Beispiel #9
0
int cmd_date(char *rest)
{
  char s[40];

  if (!rest || !*rest)
  {
    struct dosdate_t d;

    _dos_getdate(&d);

    displayString(TEXT_MSG_CURRENT_DATE,
                   day_strings[d.dayofweek], d.month, d.day, d.year);

    rest = NULL;
  }

  while (1)                     /*forever loop */

  {
    if (!rest)
    {
      if ((rest = getMessage(TEXT_MSG_ENTER_DATE)) == NULL)
        return 1;               /* failed, error message on screan already */

      fputs(rest, stdout);      /* put onto screen */
      free(rest);
      fgets(s, sizeof(s), stdin);
      if (cbreak)
        return 1;
      if (parsedate(s))
        return 0;
    }
    else
    {
      if (parsedate(rest))
        return 0;
    }
    displayString(TEXT_ERROR_INVALID_DATE);
    // force input the next time around.
    rest = NULL;
  }
}
Beispiel #10
0
//static DWORD LoadOldKey(char* filename,CPtrArray* array,DWORD appID)
//static DWORD LoadOldKey(char* filename, HDATA& hRootData, DWORD appID)
static DWORD LoadOldKey(DWORD appID, const char* filename, DWORD* level, BOOL* valid, HDATA& hRootData)
 {
  DWORD ret=0;
  AVP_KeyHeader  avpKeyHeader;

  int handle;
  unsigned bytes;
  unsigned char *cbuf;
  DWORD Level=0;
  BOOL  Valid=TRUE;
  BOOL  platf=FALSE;

  if(_dos_open(filename,O_RDONLY,&handle)) return ret;
  if(_dos_read(handle,(void far *)&avpKeyHeader,sizeof(avpKeyHeader),&bytes)
  ||avpKeyHeader.Magic!=AVP_KEY_MAGIC||avpKeyHeader.Version!=3
  ||((cbuf=(unsigned char *)Malloc(avpKeyHeader.CompressedSize))==0))
   { _dos_close(handle); return ret; }

  //if(KeyHeader.CompressedCRC==CalcSum((BYTE*)cbuf,KeyHeader.CompressedSize))
  if(((avpKey=(struct _AVP_Key *)Malloc(avpKeyHeader.UncompressedSize))==NULL)
  ||_dos_read(handle,(void *)cbuf,avpKeyHeader.CompressedSize,&bytes))
   { _dos_close(handle); Free(cbuf); return ret; }
  _dos_close(handle);

  if(avpKeyHeader.CompressedCRC==CalcSum((BYTE*)cbuf,avpKeyHeader.CompressedSize))
   {
    for(int i=0;i<avpKeyHeader.CompressedSize;i++) cbuf[i]^=(BYTE)i;
    if(avpKeyHeader.UncompressedSize==unsqu(cbuf,(unsigned char *)avpKey) )//&&!FFake)
     {
      avp_key_present=1;

      switch(appID)
       {
        case AVP_APID_SCANNER_WIN_95:
          platf=!!(avpKey->Platforms & KEY_P_WIN95);
          break;
        case AVP_APID_SCANNER_WIN_NTWS:
          platf=!!(avpKey->Platforms & KEY_P_WINNT);
          break;
        case AVP_APID_MONITOR_WIN_95:
          platf=!!(avpKey->Platforms & KEY_P_WIN95) && !!(avpKey->Options & KEY_O_MONITOR);
          break;
        case AVP_APID_MONITOR_WIN_NTWS:
          platf=!!(avpKey->Platforms & KEY_P_WINNT) && !!(avpKey->Options & KEY_O_MONITOR);
          break;
        case AVP_APID_OS_2:
          platf=!!(avpKey->Platforms & KEY_P_OS2);
          break;
        case AVP_APID_SCANNER_DOS_LITE:
          platf=!!(avpKey->Platforms & KEY_P_DOSLITE);
          break;
        case AVP_APID_NOVELL:
          platf=!!(avpKey->Platforms & KEY_P_NOVELL);
          break;
        case AVP_APID_SCANNER_DOS_32:
        case AVP_APID_SCANNER_DOS_16:
          platf=!!(avpKey->Platforms & KEY_P_DOS);
          break;
        case AVP_APID_CONTROLCENTER:
        case AVP_APID_UPDATOR:
          platf=!!(avpKey->Platforms & KEY_P_WIN95) || !!(avpKey->Platforms & KEY_P_WINNT);
          break;
        case AVP_APID_INSPECTOR:
        case AVP_APID_WEBINSPECTOR:
        case AVP_APID_EXCHANGE:
        case AVP_APID_NT_SERVER:
        default:
          break;
       }

      if(platf)
       {
        ret=FN_MINIMAL;
        ret|=FN_OPTIONS;

        if(avpKey->Options & KEY_O_REMOTELAUNCH)ret|=FN_NETWORK;
        if(avpKey->Options & KEY_O_REMOTESCAN)  ret|=FN_NETWORK;

        if(!(avpKey->Options & KEY_O_DISINFECT))ret&=~FN_DISINFECT;
        if(!(avpKey->Options & KEY_O_UNPACK))   ret&=~FN_UNPACK;
        if(!(avpKey->Options & KEY_O_EXTRACT))  ret&=~FN_EXTRACT;

        struct dosdate_t stCurrent;
        //SYSTEMTIME stCurrent;
        SYSTEMTIME stExpir;
        _dos_getdate(&stCurrent);
        //GetSystemTime(&stCurrent);
        memset(&stExpir,0,sizeof(struct dosdate_t));//SYSTEMTIME));
        stExpir.wYear =avpKey->ExpirYear;
        stExpir.wMonth=(unsigned char)avpKey->ExpirMonth;
        stExpir.wDay  =(unsigned char)avpKey->ExpirDay;
        if(stCurrent.year > stExpir.wYear) Valid=FALSE;
        else if(stCurrent.year < stExpir.wYear) ;
        else if(stCurrent.month > stExpir.wMonth) Valid=FALSE;
        else if(stCurrent.month < stExpir.wMonth) ;
        else if(stCurrent.day > stExpir.wDay) Valid=FALSE;
        //if(stCurrent.year >stExpir.wYear) goto time_bad;
        //if(stCurrent.year <stExpir.wYear) goto time_ok;
        //if(stCurrent.month>stExpir.wMonth)goto time_bad;
        //if(stCurrent.month<stExpir.wMonth)goto time_ok;
        //if(stCurrent.day  >stExpir.wDay)  goto time_bad;
        //if(stCurrent.day  <stExpir.wDay)  goto time_ok;
//time_bad:
//        if(!!(avpKey->Flags & KEY_F_INFOEVERYLAUNCH)
//           || !(avpKey->Flags & KEY_F_REGISTERED)
//           || !CheckSelfExpir(stExpir))
//          goto clo;
//         ret=0;
//        else
//         ret &= ~FN_UPDATES;
//time_ok:
        if(!CheckSelfExpir(stExpir))
          Valid=FALSE;
        else
         {
         if(avpKey->Options & KEY_O_DISINFECT)
          {
           Level=10;
           if((avpKey->Options & KEY_O_UNPACK)||(avpKey->Options & KEY_O_EXTRACT)) Level=20;
           if((avpKey->Options & KEY_O_REMOTELAUNCH)||(avpKey->Options & KEY_O_REMOTESCAN)) Level=30;
          }
         else
          {
           if(avpKey->Flags & KEY_F_INFOEVERYLAUNCH) Valid=FALSE;
           else Level=5;
          }
         }

        if(DATA_Init_Library((void*(*)(unsigned int))Malloc,Free))
         {
          hRootData=DATA_Add(0,0,AVP_PID_KEYROOT,0,0);
          if(hRootData)
           {
            DATA_Add(hRootData,0,PID_FILENAME,(DWORD)filename,0);

            HDATA hInfo;
            hInfo=DATA_Add(hRootData,0,AVP_PID_KEYINFO,0,0);

            //OemToChar(buf+Key->RegNumberOffs, buf+Key->RegNumberOffs);
            //OemToChar(buf+Key->CopyInfoOffs, buf+Key->CopyInfoOffs);
            //OemToChar(buf+Key->SupportOffs, buf+Key->SupportOffs);

            DATA_Add(hInfo,0, PID_SERIALSTR,(DWORD)avpKey+avpKey->RegNumberOffs,0);
            DATA_Add(hInfo,0, AVP_PID_KEYPLPOSNAME,  (DWORD)"AVP Key v1.0", 0);
            DATA_Add(hInfo,0, AVP_PID_KEYLICENCEINFO,(DWORD)avpKey+avpKey->CopyInfoOffs,0);
            DATA_Add(hInfo,0, AVP_PID_KEYSUPPORTINFO,(DWORD)avpKey+avpKey->SupportOffs,0);
            if(stExpir.wDay!=0)
             DATA_Add(hInfo,0, AVP_PID_KEYEXPDATE, (DWORD)&stExpir, sizeof(AVP_date));
           }
         }
       }
     }
    else ret=0;
    if(!(avpKey->Flags&KEY_F_REGISTERED)||!(avpKey->Platforms&KEY_P_DOS))
     ret=0;
   }
  else ret=0;
//clo:
  Free(cbuf);

  if(ret)
   {
    if(level) *level=MAX(*level, Level);
    if(valid) *valid|=Valid;
   }
  return ret;
 }
Beispiel #11
0
//$$$$$$$$$$$$$$$$$$$$$$$$
void active_status_bar(int i,int j) //defaultvalue  i==
{

    //int row=13;

    struct dostime_t t;
    _dos_gettime(&t);

    struct dosdate_t d;
    _dos_getdate(&d);

   window(1,2,80,23);
   textbackground(1);
   clrscr();

   window(1,24,80,25);
   textbackground(7);
   clrscr();


   switch(j){
      case 1:	      gotoxy(1,1);
		      textcolor(4);

		      cprintf(Status[i]);

		      gotoxy(14,1);
		      textcolor(0);
		      cprintf( Status_Expressoin[i]);
		      break;
     case 2:	      gotoxy(1,1);
		      textcolor(4);

		      cprintf(file_list1[i]);
		      cprintf(file_list2[i]);

		      gotoxy(14,1);
		      textcolor(0);
		      cprintf( File_Status_Expressoin[i]);
		      break;
     case 3:	      gotoxy(1,1);
		      textcolor(4);

		      cprintf(PROGRAMMER_list1[i]);

		      gotoxy(17,1);
		      textcolor(0);
		      cprintf( PROGRAMMER_Status_Expressoin[i]);
		      break;

     case 4:	      gotoxy(1,1);
		      textcolor(4);

		      cprintf("");

		      gotoxy(17,1);
		      textcolor(0);
		      cprintf( PROGRAMMER_Status_Expressoin[i]);
		      break;

      case 5:	      gotoxy(1,1);
		      textcolor(4);

		      cprintf(project_list1[i]);
		      cprintf(project_list2[i]);
		      gotoxy(17,1);
		      textcolor(0);
		      cprintf(Project_Status_Expressoin[i]);
		      break;




      case 6: gotoxy(1,1);
		      textcolor(4);

		      cprintf(project_list1[i]);
		      cprintf(project_list2[i]);
		      gotoxy(17,1);
		      textcolor(0);
		      cprintf(Project_Status_Expressoin[i]);
		      break;


      case 7:	      gotoxy(1,1);
		      textcolor(4);

		      cprintf(project_list1[i]);
		      cprintf(project_list2[i]);
		      gotoxy(17,1);
		      textcolor(0);
		      cprintf(Project_Status_Expressoin[i]);
		      break;




   }


  textcolor(6);
  gotoxy(57,1);
  cprintf("%d - %d - %d ", d.month,d.day,d.year);
  cprintf(" %2d : %02d", t.hour, t.minute);
    window(1,25,80,25);
   textbackground(1);
   clrscr();
}
Beispiel #12
0
USHORT FIDOSDM::ReadHeader (ULONG ulMsg)
{
   int dd, yy, hr, mn, sc;
   USHORT RetVal = FALSE, i;
   CHAR mm[4];
   MSGINDEX *msgIndex;
   struct dosdate_t date;
   struct dostime_t time;

   New ();

   if ((msgIndex = (MSGINDEX *)Index.First ()) != NULL)
      do {
         if (msgIndex->Number == ulMsg) {
            sprintf (LastFile, "%s%s", BasePath, msgIndex->FileName);
            if ((fp = _fsopen (LastFile, "rb", SH_DENYNO)) != NULL) {
               RetVal = TRUE;
               Current = ulMsg;

               memset (&msgHdr, 0, sizeof (msgHdr));
               fread (&msgHdr, sizeof (msgHdr), 1, fp);
               fclose (fp);

               sprintf (FromAddress, "%d/%d", msgHdr.OrigNet, msgHdr.OrigNode);
               sprintf (ToAddress, "%d/%d", msgHdr.DestNet, msgHdr.DestNode);

               for (i = 0; i < 7; i++) {
                  if (!strncmp (fidoDays[i], msgHdr.Date, 3))
                     break;
               }

               if (i < 7) {
                  sscanf (&msgHdr.Date[4], "%2d %3s %2d %2d:%2d", &dd, mm, &yy, &hr, &mn);
                  sc = 0;
               }
               else
                  sscanf (msgHdr.Date, "%2d %3s %2d  %2d:%2d:%02d", &dd, mm, &yy, &hr, &mn, &sc);

               Written.Day = (UCHAR)dd;
               for (i = 0; i < 12; i++) {
                  if (!stricmp (fidoMonths[i], mm)) {
                     Written.Month = (UCHAR)(i + 1);
                     break;
                  }
               }
               if (Written.Month < 1 || Written.Month > 12)
                  Written.Month = 1;
               if ((Written.Year = (USHORT)(yy + 1900)) < 1990)
                  Written.Year += 100;
               Written.Hour = (UCHAR)hr;
               Written.Minute = (UCHAR)mn;
               Written.Second = (UCHAR)sc;

               _dos_getdate (&date);
               _dos_gettime (&time);

               Arrived.Day = date.day;
               Arrived.Month = date.month;
               Arrived.Year = (USHORT)date.year;
               Arrived.Hour = time.hour;
               Arrived.Minute = time.minute;
               Arrived.Second = time.second;

               strcpy (From, msgHdr.From);
               strcpy (To, msgHdr.To);
               strcpy (Subject, msgHdr.Subject);

               Crash = (UCHAR)((msgHdr.Attrib & MSGCRASH) ? TRUE : FALSE);
               FileAttach = (UCHAR)((msgHdr.Attrib & MSGFILE) ? TRUE : FALSE);
               FileRequest = (UCHAR)((msgHdr.Attrib & MSGFRQ) ? TRUE : FALSE);
               Hold = (UCHAR)((msgHdr.Attrib & MSGHOLD) ? TRUE : FALSE);
               KillSent = (UCHAR)((msgHdr.Attrib & MSGKILL) ? TRUE : FALSE);
               Local = (UCHAR)((msgHdr.Attrib & MSGLOCAL) ? TRUE : FALSE);
               Private = (UCHAR)((msgHdr.Attrib & MSGPRIVATE) ? TRUE : FALSE);
               ReceiptRequest = (UCHAR)((msgHdr.Attrib & MSGRRQ) ? TRUE : FALSE);
               Received = (UCHAR)((msgHdr.Attrib & MSGREAD) ? TRUE : FALSE);
               Sent = (UCHAR)((msgHdr.Attrib & MSGSENT) ? TRUE : FALSE);

               Original = msgHdr.Reply;
               Reply = msgHdr.Up;
               break;
            }
         }
      } while ((msgIndex = (MSGINDEX *)Index.Next ()) != NULL);

   return (RetVal);
}
Beispiel #13
0
USHORT FIDOSDM::Read (ULONG ulMsg, class TCollection &MsgText, SHORT nWidth)
{
   int fz, fn, fo, tz, tn, to, dd, yy, hr, mn, sc;
   USHORT RetVal = FALSE, SkipNext;
   USHORT ToPoint, ToZone, FromPoint, FromZone;
   CHAR mm[4];
   SHORT i, nReaded, nCol;
   MSGINDEX *msgIndex;
   struct dosdate_t date;
   struct dostime_t time;

   New ();
   MsgText.Clear ();
   ToPoint = ToZone = FromPoint = FromZone = 0;
   fp = NULL;

   if ((msgIndex = (MSGINDEX *)Index.First ()) != NULL)
      do {
         if (msgIndex->Number == ulMsg) {
            sprintf (LastFile, "%s%s", BasePath, msgIndex->FileName);
            if ((fp = _fsopen (LastFile, "rb", SH_DENYNO)) != NULL) {
               RetVal = TRUE;
               Current = ulMsg;
               break;
            }
         }
      } while ((msgIndex = (MSGINDEX *)Index.Next ()) != NULL);

   if (RetVal == TRUE && fp != NULL) {
      memset (&msgHdr, 0, sizeof (msgHdr));
      fread (&msgHdr, sizeof (msgHdr), 1, fp);

      for (i = 0; i < 7; i++) {
         if (!strncmp (fidoDays[i], msgHdr.Date, 3))
            break;
      }

      if (i < 7) {
         sscanf (&msgHdr.Date[4], "%2d %3s %2d %2d:%2d", &dd, mm, &yy, &hr, &mn);
         sc = 0;
      }
      else
         sscanf (msgHdr.Date, "%2d %3s %2d  %2d:%2d:%02d", &dd, mm, &yy, &hr, &mn, &sc);

      Written.Day = (UCHAR)dd;
      for (i = 0; i < 12; i++) {
         if (!stricmp (fidoMonths[i], mm)) {
            Written.Month = (UCHAR)(i + 1);
            break;
         }
      }
      if (Written.Month < 1 || Written.Month > 12)
         Written.Month = 1;
      if ((Written.Year = (USHORT)(yy + 1900)) < 1990)
         Written.Year += 100;
      Written.Hour = (UCHAR)hr;
      Written.Minute = (UCHAR)mn;
      Written.Second = (UCHAR)sc;

      _dos_getdate (&date);
      _dos_gettime (&time);

      Arrived.Day = date.day;
      Arrived.Month = date.month;
      Arrived.Year = (USHORT)date.year;
      Arrived.Hour = time.hour;
      Arrived.Minute = time.minute;
      Arrived.Second = time.second;

      strcpy (From, msgHdr.From);
      strcpy (To, msgHdr.To);
      strcpy (Subject, msgHdr.Subject);

      Crash = (UCHAR)((msgHdr.Attrib & MSGCRASH) ? TRUE : FALSE);
      FileAttach = (UCHAR)((msgHdr.Attrib & MSGFILE) ? TRUE : FALSE);
      FileRequest = (UCHAR)((msgHdr.Attrib & MSGFRQ) ? TRUE : FALSE);
      Hold = (UCHAR)((msgHdr.Attrib & MSGHOLD) ? TRUE : FALSE);
      KillSent = (UCHAR)((msgHdr.Attrib & MSGKILL) ? TRUE : FALSE);
      Local = (UCHAR)((msgHdr.Attrib & MSGLOCAL) ? TRUE : FALSE);
      Private = (UCHAR)((msgHdr.Attrib & MSGPRIVATE) ? TRUE : FALSE);
      ReceiptRequest = (UCHAR)((msgHdr.Attrib & MSGRRQ) ? TRUE : FALSE);
      Received = (UCHAR)((msgHdr.Attrib & MSGREAD) ? TRUE : FALSE);
      Sent = (UCHAR)((msgHdr.Attrib & MSGSENT) ? TRUE : FALSE);

      Original = msgHdr.Reply;
      Reply = msgHdr.Up;

      pLine = szLine;
      nCol = 0;
      Current = ulMsg;
      SkipNext = FALSE;

      do {
         nReaded = (SHORT)fread (szBuff, 1, sizeof (szBuff), fp);

         for (i = 0, pBuff = szBuff; i < nReaded && *pBuff != '\0'; i++, pBuff++) {
            if (*pBuff == '\r') {
               *pLine = '\0';
               if (!strncmp (szLine, "\001FMPT ", 6))
                  FromPoint = (USHORT)atoi (&szLine[6]);
               else if (!strncmp (szLine, "\001TOPT ", 6))
                  ToPoint = (USHORT)atoi (&szLine[6]);
               else if (!strncmp (szLine, "\001INTL ", 6)) {
                  sscanf (&szLine[6], "%d:%d/%d %d:%d/%d", &tz, &tn, &to, &fz, &fn, &fo);
                  if (tn == msgHdr.DestNet && to == msgHdr.DestNode)
                     ToZone = (USHORT)tz;
                  if (fn == msgHdr.OrigNet && fo == msgHdr.OrigNode)
                     FromZone = (USHORT)fz;
               }
               else if (!strncmp (szLine, "\001FLAGS ", 7)) {
                  if (strstr (szLine, "DIR"))
                     Direct = TRUE;
               }
               if (pLine > szLine && SkipNext == TRUE) {
                  pLine--;
                  while (pLine > szLine && *pLine == ' ')
                     *pLine-- = '\0';
                  if (pLine > szLine)
                     MsgText.Add (szLine);
               }
               else if (SkipNext == FALSE)
                  MsgText.Add (szLine);
               SkipNext = FALSE;
               pLine = szLine;
               nCol = 0;
            }
            else if (*pBuff != '\n') {
               *pLine++ = *pBuff;
               nCol++;
               if (nCol >= nWidth) {
                  *pLine = '\0';
                  if (strchr (szLine, ' ') != NULL) {
                     while (nCol > 1 && *pLine != ' ') {
                        nCol--;
                        pLine--;
                     }
                     if (nCol > 0) {
                        while (*pLine == ' ')
                           pLine++;
                        strcpy (szWrp, pLine);
                     }
                     *pLine = '\0';
                  }
                  else
                     szWrp[0] = '\0';
                  MsgText.Add (szLine);
                  strcpy (szLine, szWrp);
                  pLine = strchr (szLine, '\0');
                  nCol = (SHORT)strlen (szLine);
                  SkipNext = TRUE;
               }
            }
         }
      } while (nReaded != 0 && i >= nReaded);

      sprintf (FromAddress, "%u:%u/%u.%u", FromZone, msgHdr.OrigNet, msgHdr.OrigNode, FromPoint);
      sprintf (ToAddress, "%u:%u/%u.%u", ToZone, msgHdr.DestNet, msgHdr.DestNode, ToPoint);

      fclose (fp);
   }

   return (RetVal);
}
Beispiel #14
0
void funccall::ss()
{

	int v;
	struct dostime_t t;
	struct dosdate_t d;
	do
	{
		textbackground(BLUE);
		textcolor(MAGENTA);
		_setcursortype(_NORMALCURSOR);
		clrscr();
		textcolor(GREEN);
		box(4,4,4,4);
		box(4,4,6,6);
		textcolor(GREEN+BLINK);
		gotoxy(11,7);
		cputs("CREEPER");
		delay(502);
		_dos_gettime(&t);
		_dos_getdate(&d);
		box(21,6,52,4,222);
		gotoxy(54,6);
		printf("DATE:%2d/%02d/%02d\n",d.day,d.month,d.year);
		gotoxy(54,7);
		printf("Time:%2d:%02d:%02d.%02d\n",t.hour,t.minute,t.second,t.hsecond);

		gotoxy(25,9);
		textcolor(WHITE+BLINK);
		cputs(">>>> SCREEN SAVERS >>>>");
		box(35,10,20,11);
		textcolor(WHITE);
		gotoxy(22,12);
		cputs("1. COLOUR BOX");
		gotoxy(22,13);
		cputs("2. WELCOME NOTE");
		gotoxy(22,14);
		cputs("3. CREEPER BOOTING");
		gotoxy(22,15);
		cputs("4. CREEPER ALL THE WAY");
		gotoxy(22,16);
		cputs("0. MAIN MENU");
		gotoxy(25,18);
		cputs("ENTER THE CHOICE NUMBER : ");
		v=int(getche()-48);
		delay(100);
		if(v)
		{ switch(v)
		 {
			case 1:
			      colbox();
			      break;

			case 2:
				wel();
				break;
			case 3:
				intro();
				break;
			case 4:
				crepalltheway();
				break;
			default:

				gotoxy(27,20);
				cputs("INVALID ENTRY");
				delay(1000);
				break;

		 }}
	}while(v!=0);
}
Beispiel #15
0
//-------------------------------------------------------------------------
// freed_main()
//-------------------------------------------------------------------------
void freed_main()
{
// Setup for APOGEECD thingie.
//
	InitDestPath();

// Make sure there's room to play the game
//
	CheckDiskSpace(DISK_SPACE_NEEDED,CANT_PLAY_TXT,cds_dos_print);

// Which version is this? (SHAREWARE? 1-3? 1-6?)
//
	CheckForEpisodes();

    std::string arg;

	switch (::g_args.check_argument(MainStrs, arg))
	{
#if IN_DEVELOPMENT || TECH_SUPPORT_VERSION
		case 0:											// quick run
			gamestate.flags |= GS_QUICKRUN;

		case 1:											// no wait
			gamestate.flags |= GS_NOWAIT;
		break;
#endif

		case 2:											// starting level
			gamestate.flags |= GS_STARTLEVEL;
			starting_level=scan_atoi(arg.c_str());
		break;

		case 3:
			gamestate.flags |= GS_STARTLEVEL;
			starting_episode=scan_atoi(arg.c_str())-1;
		break;

		case 4:
			fprint(cinfo_text);

			printf("\n"
						"     Version: %s\n"
						"COMPILE DATE: %s\n\n",
						__BLAKE_VERSION__,__DATE__);
			exit(0);
		break;

		case 5:
			ShowSystem();
			exit(0);
		break;

#if IN_DEVELOPMENT
#ifdef DEBUG_VALUE
		case 6:
			debug_value=scan_atoi(g_argv[i]);
		break;
#endif
#endif

		case 7:
			gamestate.flags |= GS_TICS_FOR_SCORE;
		break;

		case 8:
//				gamestate.flags |= GS_MEM_FOR_SCORE;
		break;

		case 9:
			PowerBall = 1;
		break;

		case 11:
			gamestate.flags |= GS_STARTLEVEL;
			starting_difficulty=scan_atoi(arg.c_str())-1;
		break;

		case 10:
			gamestate.flags |= GS_MUSIC_TEST;
		break;

		case 12:
			gamestate.flags |= GS_SHOW_OVERHEAD;
		break;
	}


#if BETA_TEST
	//
	// THIS IS FOR BETA ONLY!
	//

	_dos_getdate(&d);
	if ((d.year > BETA_YEAR) ||
		 ((d.year == BETA_YEAR) && (d.month > BETA_MONTH)) ||
		 ((d.year == BETA_YEAR) && (d.month == BETA_MONTH) && (d.day >= BETA_DAY)))
	{
		FILE *out;
		char name[20]="VSWAP.";

		strcat(name,extension);
		out = fopen(name,"w");
		fprintf(out,"\n\n SELF DESTRUCTED \n");
		fclose(out);
		remove("vswap.bs1");
		fprint(dver_text);
		exit(0);
	}
#endif

	InitGame ();

	bufferofs=SCREENSIZE;

	PreDemo();
}
Beispiel #16
0
void funccall::mmenu()
{

	int v;
	struct dostime_t t;
	struct dosdate_t d;
	do
	{
		textbackground(BLUE);
		textcolor(MAGENTA);
		_setcursortype(_NORMALCURSOR);
		clrscr();
		textcolor(GREEN);
		box(4,4,4,4);
		box(4,4,6,6);
		textcolor(GREEN+BLINK);
		gotoxy(11,7);
		cputs("CREEPER");
		delay(502);
		_dos_gettime(&t);
		_dos_getdate(&d);
		box(21,6,52,4,222);
		gotoxy(54,6);
		printf("DATE:%2d/%02d/%02d\n",d.day,d.month,d.year);
		gotoxy(54,7);
		printf("Time:%2d:%02d:%02d.%02d\n",t.hour,t.minute,t.second,t.hsecond);

		gotoxy(29,9);
		textcolor(WHITE+BLINK);
		cputs(">>>> MENU >>>>");

		for(int i=0;i<13;++i)
		{
			box(1+(6*i),1+i,3,11);
			delay(70);
			box(1+6*i,1+i,3,11,int(' '));

		}
			box(76,14,3,11);
		textcolor(WHITE);
		gotoxy(5,12);
		cputs("1. CONTROL PANEL");
		gotoxy(5,14);
		cputs("2. SCREEN SAVERS");
		gotoxy(5,16);
		cputs("3. ENTERTAINMENT");
		gotoxy(5,18);
		cputs("4. OFFICE");
		gotoxy(28,20);
		cputs("0. EXIT");
		gotoxy(25,22);
		cputs("ENTER THE CHOICE NUMBER : ");
		v=int(getche()-48);
		delay(100);
		if(v)
		{ switch(v)
		 {
			case 1:
			      contpan();
			      break;
			case 2:
				ss();
				break;
			case 3:
				entertainment();
				break;

			case 4: of_beg();
				break;
			default:

				gotoxy(55,22);
				cputs("INVALID ENTRY");
				delay(1000);
				break;

		 }}
	}while(v!=0);
}
Beispiel #17
0
static DWORD LoadKey(DWORD appID, const char* filename, DWORD* level, BOOL* valid, HDATA& hRootData)
 {
  DWORD ret=0;
  DWORD Level=0;
  BOOL Valid=TRUE;

  if(sign_check_file(filename,1,0,0,0))
   {
    int f;
    if(_dos_open(filename,O_RDONLY,&f)) return ret;
    DWORD count;
    DWORD val=0;
    _dos_read(f,(void far *)&val,4,(unsigned int*)&count);
    _dos_close(f);
    if(count!=4 || val!='wsLK') return ret;
    if(!DATA_Init_Library((void*(*)(unsigned int))Malloc,Free)) return ret;

    hRootData=DATA_Add(0,0,AVP_PID_KEYROOT,0,0);
    if(!hRootData) return ret;

    DATA_Add(hRootData,0,PID_FILENAME,(DWORD)filename,0);

    HDATA hInfo;
    hInfo=DATA_Add(hRootData,0,AVP_PID_KEYINFO,0,0);
    DATA_Add(hInfo,0, PID_SERIALSTR,  (DWORD)"Corrupted", 0);
    return ret;
   }

  _AvpReadFile   =AvpReadFile;
  _AvpWriteFile  =AvpWriteFile;
  _AvpCloseHandle=AvpCloseHandle;
  _AvpCreateFile =AvpCreateFile;
  _AvpGetFileSize=AvpGetFileSize;

  if(!KLDT_Init_Library((void*(*)(unsigned int))Malloc,Free)) return ret;
  if(!DATA_Init_Library((void*(*)(unsigned int))Malloc,Free)) return ret;

  AVP_dword dseq[5];

  if(!KLDT_DeserializeUsingSWM( filename, &hRootData ))return ret;
  if(hRootData==NULL) return ret;
  ret=TRUE;
  AVP_dword pid;
  pid=MAKE_AVP_PID(appID, AVP_APID_GLOBAL, avpt_dword, 0);
  if(AVP_PID_KEYROOT!=DATA_Get_Id( hRootData, 0 )
  || !DATA_Get_Val( hRootData, DATA_Sequence(dseq,pid,0), 0, &Level, sizeof(Level)) )
   {
    DATA_Remove( hRootData, 0 );
    hRootData=0;
    return ret;
   }

//  ret|=FN_MINIMAL;
//  if(level>=10) ret|=FN_UPDATES;
//  if(level>=20) ret|=FN_OPTIONS;
//  if(level>=30) ret|=FN_FULL;

  struct dosdate_t stCurrent;
  SYSTEMTIME stExpir;
  _dos_getdate(&stCurrent);
  memset(&stExpir,0,sizeof(SYSTEMTIME));
  if( !DATA_Get_Val( hRootData, DATA_Sequence(dseq,AVP_PID_KEYINFO,AVP_PID_KEYEXPDATE,0),0,&stExpir,sizeof(AVP_date)) ) goto dr;

  AVP_dword keynumber[3];
  DATA_Get_Val(hRootData,DATA_Sequence(dseq,AVP_PID_KEYINFO,AVP_PID_KEYSERIALNUMBER,0), 0, keynumber, sizeof(keynumber));
  char buf[0x20];
  _sprintf(buf,"%04d-%06d-%08d",keynumber[0],keynumber[1],keynumber[2]);
  DATA_Add(hRootData,DATA_Sequence(dseq,AVP_PID_KEYINFO,0), PID_SERIALSTR, (DWORD)buf,0);

  BOOL keyIsTrial;
  keyIsTrial=(DATA_Find(hRootData, DATA_Sequence(dseq,AVP_PID_KEYINFO,AVP_PID_KEYISTRIAL,0)))?1:0;
  AVP_dword PLPos;
  PLPos=0;
  DATA_Get_Val( hRootData, DATA_Sequence(dseq,AVP_PID_KEYINFO,AVP_PID_KEYPLPOS,0), 0, &PLPos, sizeof(AVP_dword));

  if(stCurrent.year > stExpir.wYear) Valid=FALSE;
  else if(stCurrent.year < stExpir.wYear) ;
  else if(stCurrent.month > stExpir.wMonth) Valid=FALSE;
  else if(stCurrent.month < stExpir.wMonth) ;
  else if(stCurrent.day > stExpir.wDay) Valid=FALSE;

  if(Valid)
   {
    AVP_dword life;
    if( DATA_Get_Val( hRootData, DATA_Sequence(dseq,AVP_PID_KEYINFO,AVP_PID_KEYLIFESPAN,0), 0, &life, sizeof(AVP_dword)) )
     {
      //if(!CheckKeyUseTime(keynumber,life,stExpir,keyIsTrial?&PLPos:NULL))Valid=FALSE;
     }
   }

  if(!Valid &&( keyIsTrial|| !CheckSelfExpir(stExpir))) Level=0;

  DATA_Set_Val(hRootData,DATA_Sequence(dseq,AVP_PID_KEYINFO,AVP_PID_KEYEXPDATE,0), 0, (DWORD)&stExpir, sizeof(AVP_date));

dr:
  DATA_Add(hRootData,0,PID_FILENAME,(DWORD)filename,0);

  if(ret){
          if(level) *level=MAX(*level, Level);
          if(valid) *valid|=Valid;
  }
  return ret;
 }
Beispiel #18
0
USHORT PACKET::ReadHeader (ULONG ulMsg)
{
   int dd, yy, hr, mn, sc;
   USHORT RetVal = FALSE, i;
   CHAR mm[4];
   PKTINDEX *pktIndex;
   struct dosdate_t date;
   struct dostime_t time;

   New ();

   if ((pktIndex = (PKTINDEX *)Index.First ()) != NULL) {
      do {
         if (pktIndex->Number == ulMsg) {
            fseek (fp, pktIndex->Position, SEEK_SET);
            break;
         }
      } while ((pktIndex = (PKTINDEX *)Index.Next ()) != NULL);
   }

   memset (&msgHdr, 0, sizeof (MSGHDR));
   fread (&msgHdr, sizeof (MSGHDR), 1, fp);

   if (msgHdr.Version == 2) {
      RetVal = TRUE;

      if (pkt2Hdr.Capability != pkt2Hdr.CWValidation || !(pkt2Hdr.Capability & 0x0001)) {
         sprintf (FromAddress, "%d:%d/%d.%d", pkt2Hdr.OrigZone, msgHdr.OrigNet, msgHdr.OrigNode, 0);
         sprintf (ToAddress, "%d:%d/%d.%d", pkt2Hdr.DestZone, msgHdr.DestNet, msgHdr.DestNode, 0);
      }
      else {
         sprintf (FromAddress, "%d:%d/%d.%d", pkt2Hdr.OrigZone, msgHdr.OrigNet, msgHdr.OrigNode, pkt2Hdr.OrigPoint);
         sprintf (ToAddress, "%d:%d/%d.%d", pkt2Hdr.DestZone, msgHdr.DestNet, msgHdr.DestNode, pkt2Hdr.DestPoint);
      }

      GetLine ();
      sscanf (Line, "%2d %3s %2d  %2d:%2d:%02d", &dd, mm, &yy, &hr, &mn, &sc);

      Written.Day = (UCHAR)dd;
      for (i = 0; i < 12; i++) {
         if (!stricmp (pktMonths[i], mm)) {
            Written.Month = (UCHAR)(i + 1);
            break;
         }
      }
      if (Written.Month < 1 || Written.Month > 12)
         Written.Month = 1;
      if ((Written.Year = (USHORT)(yy + 1900)) < 1990)
         Written.Year += 100;
      Written.Hour = (UCHAR)hr;
      Written.Minute = (UCHAR)mn;
      Written.Second = (UCHAR)sc;

      _dos_getdate (&date);
      _dos_gettime (&time);

      Arrived.Day = date.day;
      Arrived.Month = date.month;
      Arrived.Year = (USHORT)date.year;
      Arrived.Hour = time.hour;
      Arrived.Minute = time.minute;
      Arrived.Second = time.second;

      GetLine ();
      strcpy (To, Line);
      GetLine ();
      strcpy (From, Line);
      GetLine ();
      strcpy (Subject, Line);
   }

   return (RetVal);
}
Beispiel #19
0
USHORT PACKET::Open (PSZ pszName, USHORT doScan)
{
   int c;
   USHORT RetVal = FALSE, i;
   PSZ pszAddress;
   ULONG Position;
   PKTINDEX pktIndex;
   struct dosdate_t date;
   struct dostime_t time;

   TotalMsgs = 0L;
   Index.Clear ();

   if (fp != NULL)
      fclose (fp);

   if ((fp = fopen (pszName, "r+b")) == NULL)
      fp = fopen (pszName, "w+b");
   strcpy (FileName, pszName);

   if (fp != NULL) {
      setvbuf (fp, NULL, _IOFBF, 4096L);
      if (filelength (fileno (fp)) == 0L) {
         memset (&pkt2Hdr, 0, sizeof (PKT2HDR));

         _dos_getdate (&date);
         _dos_gettime (&time);

         pkt2Hdr.Version = 2;
         pkt2Hdr.CWValidation = 0x100;
         pkt2Hdr.Capability = 0x0001;
         pkt2Hdr.ProductL = 0x4E;

         pkt2Hdr.Day = date.day;
         pkt2Hdr.Month = (UCHAR)(date.month - 1);
         pkt2Hdr.Year = (USHORT)date.year;
         pkt2Hdr.Hour = time.hour;
         pkt2Hdr.Minute = time.minute;
         pkt2Hdr.Second = time.second;

         pszAddress = ToAddress;
         if (strchr (pszAddress, ':') != NULL) {
            pkt2Hdr.DestZone2 = pkt2Hdr.DestZone = (USHORT)atoi (pszAddress);
            pszAddress = strchr (pszAddress, ':') + 1;
         }
         if (strchr (pszAddress, '/') != NULL) {
            pkt2Hdr.DestNet = (USHORT)atoi (pszAddress);
            pszAddress = strchr (pszAddress, '/') + 1;
         }
         pkt2Hdr.DestNode = (USHORT)atoi (pszAddress);
         if (strchr (pszAddress, '.') != NULL) {
            pszAddress = strchr (pszAddress, '.') + 1;
            pkt2Hdr.DestPoint = (USHORT)atoi (pszAddress);
         }

         pszAddress = FromAddress;
         if (strchr (pszAddress, ':') != NULL) {
            pkt2Hdr.OrigZone2 = pkt2Hdr.OrigZone = (USHORT)atoi (pszAddress);
            pszAddress = strchr (pszAddress, ':') + 1;
         }
         if (strchr (pszAddress, '/') != NULL) {
            pkt2Hdr.OrigNet = (USHORT)atoi (pszAddress);
            pszAddress = strchr (pszAddress, '/') + 1;
         }
         pkt2Hdr.OrigNode = (USHORT)atoi (pszAddress);
         if (strchr (pszAddress, '.') != NULL) {
            pszAddress = strchr (pszAddress, '.') + 1;
            pkt2Hdr.OrigPoint = (USHORT)atoi (pszAddress);
         }

         memcpy (pkt2Hdr.Password, Password, 8);
         fwrite (&pkt2Hdr, sizeof (PKT2HDR), 1, fp);

         memset (&msgHdr, 0, sizeof (MSGHDR));
         fwrite (&msgHdr, 2, 1, fp);

         sprintf (FromAddress, "%d:%d/%d.%d", pkt2Hdr.OrigZone, pkt2Hdr.OrigNet, pkt2Hdr.OrigNode, pkt2Hdr.OrigPoint);
         sprintf (ToAddress, "%d:%d/%d.%d", pkt2Hdr.DestZone, pkt2Hdr.DestNet, pkt2Hdr.DestNode, pkt2Hdr.DestPoint);

         fflush (fp);
         fseek (fp, filelength (fileno (fp)) - sizeof (MSGHDR), SEEK_SET);
         RetVal = TRUE;
      }
      else {
         fread (&pkt2Hdr, sizeof (PKT2HDR), 1, fp);
         if (pkt2Hdr.Version == 2) {
            if (pkt2Hdr.Rate == 2) {
               memcpy (&pkt22Hdr, &pkt2Hdr, sizeof (PKT22HDR));
               sprintf (FromAddress, "%d:%d/%d.%d", pkt22Hdr.OrigZone, pkt22Hdr.OrigNet, pkt22Hdr.OrigNode, pkt22Hdr.OrigPoint);
               if (pkt22Hdr.OrigDomain[0] != '\0') {
                  strcat (FromAddress, "@");
                  strcat (FromAddress, pkt22Hdr.OrigDomain);
               }
               sprintf (ToAddress, "%d:%d/%d.%d", pkt22Hdr.DestZone, pkt22Hdr.DestNet, pkt22Hdr.DestNode, pkt22Hdr.DestPoint);
               if (pkt22Hdr.DestDomain[0] != '\0') {
                  strcat (ToAddress, "@");
                  strcat (ToAddress, pkt22Hdr.DestDomain);
               }
               RetVal = TRUE;
            }
            else {
//kj               swab ((char *)&pkt2Hdr.CWValidation, (char *)&i, 2);
               pkt2Hdr.CWValidation = i;
               if (pkt2Hdr.Capability != pkt2Hdr.CWValidation || !(pkt2Hdr.Capability & 0x0001)) {
                  sprintf (FromAddress, "%d:%d/%d.%d", pkt2Hdr.OrigZone, pkt2Hdr.OrigNet, pkt2Hdr.OrigNode, 0);
                  sprintf (ToAddress, "%d:%d/%d.%d", pkt2Hdr.DestZone, pkt2Hdr.DestNet, pkt2Hdr.DestNode, 0);
               }
               else {
                  sprintf (FromAddress, "%d:%d/%d.%d", pkt2Hdr.OrigZone, pkt2Hdr.OrigNet, pkt2Hdr.OrigNode, pkt2Hdr.OrigPoint);
                  sprintf (ToAddress, "%d:%d/%d.%d", pkt2Hdr.DestZone, pkt2Hdr.DestNet, pkt2Hdr.DestNode, pkt2Hdr.DestPoint);
               }
               memcpy (Password, pkt2Hdr.Password, sizeof (pkt2Hdr.Password));
               Password[sizeof (pkt2Hdr.Password)] = '\0';
               RetVal = TRUE;
            }
         }
      }
   }

   if (RetVal == TRUE) {
      Date.Day = (UCHAR)pkt2Hdr.Day;
      Date.Month = (UCHAR)(pkt2Hdr.Month + 1);
      Date.Year = (USHORT)pkt2Hdr.Year;
      Date.Hour = (UCHAR)pkt2Hdr.Hour;
      Date.Minute = (UCHAR)pkt2Hdr.Minute;
      Date.Second = (UCHAR)pkt2Hdr.Second;
   }

   if (RetVal == TRUE && fp != NULL && doScan == TRUE) {
      do {
         memset (&pktIndex, 0, sizeof (PKTINDEX));
         pktIndex.Position = ftell (fp);

         memset (&msgHdr, 0, sizeof (MSGHDR));
         fread (&msgHdr, sizeof (MSGHDR), 1, fp);

         if (msgHdr.Version == 2) {
            // Date and time
            while ((c = fgetc (fp)) != '\0' && c != EOF)
               ;
            // To
            while ((c = fgetc (fp)) != '\0' && c != EOF)
               ;
            // From
            while ((c = fgetc (fp)) != '\0' && c != EOF)
               ;
            // Subject
            while ((c = fgetc (fp)) != '\0' && c != EOF)
               ;
            // Text body
            while ((c = fgetc (fp)) != '\0' && c != EOF)
               ;

            TotalMsgs++;
            pktIndex.Number = TotalMsgs;
            Index.Add (&pktIndex, sizeof (PKTINDEX));
         }
         else if (msgHdr.Version != 0) {
            while ((c = fgetc (fp)) != EOF && c != 0)
               ;
            if (c == 0) {
               Position = ftell (fp);
               memset (&msgHdr, 0, sizeof (MSGHDR));
               fread (&msgHdr, sizeof (MSGHDR), 1, fp);
               fseek (fp, Position, SEEK_SET);
            }
            else
               msgHdr.Version = 0;
         }
      } while (msgHdr.Version != 0);
   }

   return (RetVal);
}
Beispiel #20
0
USHORT PACKET::Add (class TCollection &MsgText)
{
   int f1, f2, f3, f4, t1, t2, t3, t4;
   USHORT RetVal = TRUE, AddedIntl = FALSE, IsEchomail = FALSE;
   CHAR Temp[64], *pszText, *pszAddress, *p;
   PKTINDEX pktIndex;
   struct dosdate_t d_date;
   struct dostime_t d_time;

   memset (&pktIndex, 0, sizeof (PKTINDEX));
   fflush (fp);
   fseek (fp, filelength (fileno (fp)) - 2L, SEEK_SET);

   pktIndex.Number = TotalMsgs + 1;
   pktIndex.Position = ftell (fp);

   memset (&msgHdr, 0, sizeof (msgHdr));
   msgHdr.Version = 2;

   f1 = f2 = f3 = f4 = 0;
   pszAddress = FromAddress;
   if (strchr (pszAddress, ':') != NULL) {
      f1 = atoi (pszAddress);
      pszAddress = strchr (pszAddress, ':') + 1;
   }
   if (strchr (pszAddress, '/') != NULL) {
      f2 = (USHORT)atoi (pszAddress);
      pszAddress = strchr (pszAddress, '/') + 1;
   }
   f3 = (USHORT)atoi (pszAddress);
   if ((p = strchr (pszAddress, '@')) != NULL)
      *p++ = '\0';
   if (strchr (pszAddress, '.') != NULL) {
      pszAddress = strchr (pszAddress, '.') + 1;
      f4 = (USHORT)atoi (pszAddress);
   }

   msgHdr.OrigNet = (USHORT)f2;
   msgHdr.OrigNode = (USHORT)f3;

   t1 = t2 = t3 = t4 = 0;
   pszAddress = ToAddress;
   if (strchr (pszAddress, ':') != NULL) {
      t1 = atoi (pszAddress);
      pszAddress = strchr (pszAddress, ':') + 1;
   }
   if (strchr (pszAddress, '/') != NULL) {
      t2 = (USHORT)atoi (pszAddress);
      pszAddress = strchr (pszAddress, '/') + 1;
   }
   t3 = (USHORT)atoi (pszAddress);
   if ((p = strchr (pszAddress, '@')) != NULL)
      *p++ = '\0';
   if (strchr (pszAddress, '.') != NULL) {
      pszAddress = strchr (pszAddress, '.') + 1;
      t4 = (USHORT)atoi (pszAddress);
   }

   msgHdr.DestNet = (USHORT)t2;
   msgHdr.DestNode = (USHORT)t3;

   if (Crash == TRUE)
      msgHdr.Attrib |= MSGCRASH;
   if (FileAttach == TRUE)
      msgHdr.Attrib |= MSGFILE;
   if (FileRequest == TRUE)
      msgHdr.Attrib |= MSGFRQ;
   if (Hold == TRUE)
      msgHdr.Attrib |= MSGHOLD;
   if (KillSent == TRUE)
      msgHdr.Attrib |= MSGKILL;
   if (Local == TRUE)
      msgHdr.Attrib |= MSGLOCAL;
   if (Private == TRUE)
      msgHdr.Attrib |= MSGPRIVATE;
   if (ReceiptRequest == TRUE)
      msgHdr.Attrib |= MSGRRQ;
   if (Received == TRUE)
      msgHdr.Attrib |= MSGREAD;
   if (Sent == TRUE)
      msgHdr.Attrib |= MSGSENT;

   fwrite (&msgHdr, sizeof (MSGHDR), 1, fp);

   _dos_getdate (&d_date);
   _dos_gettime (&d_time);

   if (Written.Day == 0)
      Written.Day = d_date.day;
   if (Written.Month == 0)
      Written.Month = d_date.month;
   if (Written.Year == 0)
      Written.Year = (USHORT)d_date.year;
   if (Written.Hour == 0)
      Written.Hour = d_time.hour;
   if (Written.Minute == 0)
      Written.Minute = d_time.minute;
   if (Written.Second == 0)
      Written.Second = d_time.second;

   sprintf (Line, "%2d %3.3s %02d  %02d:%02d:%02d", Written.Day, pktMonths[Written.Month - 1], Written.Year % 100, Written.Hour, Written.Minute, 0);
   fwrite (Line, strlen (Line) + 1, 1, fp);

   fwrite (To, strlen (To) + 1, 1, fp);
   fwrite (From, strlen (From) + 1, 1, fp);
   fwrite (Subject, strlen (Subject) + 1, 1, fp);

   if ((pszText = (PSZ)MsgText.First ()) != NULL) {
      if (!strncmp (pszText, "AREA:", 5))
         IsEchomail = TRUE;
   }

   if (IsEchomail == FALSE) {
      if (f1 != t1) {
         sprintf (Temp, "\001INTL %d:%d/%d %d:%d/%d\r", t1, t2, t3, f1, f2, f3);
         fwrite (Temp, strlen (Temp), 1, fp);
         AddedIntl = TRUE;
      }
      if (f4 != 0) {
         sprintf (Temp, "\001FMPT %u\r", f4);
         fwrite (Temp, strlen (Temp), 1, fp);
      }
      if (t4 != 0) {
         sprintf (Temp, "\001TOPT %u\r", t4);
         fwrite (Temp, strlen (Temp), 1, fp);
      }
   }

   if ((pszText = (PSZ)MsgText.First ()) != NULL)
      do {
         if (IsEchomail == FALSE) {
            if (!strncmp (pszText, "\001FMPT ", 6))
               continue;
            else if (!strncmp (pszText, "\001TOPT ", 6))
               continue;
            else if (!strncmp (pszText, "\001INTL ", 6) && AddedIntl == TRUE)
               continue;
         }
         fwrite (pszText, strlen (pszText), 1, fp);
         fwrite ("\r", 1, 1, fp);
      } while ((pszText = (PSZ)MsgText.Next ()) != NULL);

   fwrite ("\000\000\000", 3, 1, fp);

   Index.Add (&pktIndex, sizeof (PKTINDEX));

   return (RetVal);
}
Beispiel #21
0
void funccall::contpan()
{

	int v;
	struct dostime_t t;
	struct dosdate_t d;
	do
	{
		textbackground(BLUE);
		textcolor(MAGENTA);
		_setcursortype(_NORMALCURSOR);
		clrscr();
		textcolor(GREEN);
		box(4,4,4,4);
		box(4,4,6,6);
		textcolor(GREEN+BLINK);
		gotoxy(11,7);
		cputs("CREEPER");
		delay(502);
		_dos_gettime(&t);
		_dos_getdate(&d);
		box(21,6,52,4,222);
		gotoxy(54,6);
		printf("DATE:%2d/%02d/%02d\n",d.day,d.month,d.year);
		gotoxy(54,7);
		printf("Time:%2d:%02d:%02d.%02d\n",t.hour,t.minute,t.second,t.hsecond);

		gotoxy(25,9);
		textcolor(WHITE+BLINK);
		cputs(">>>> CONTROL PANEL >>>>");
		box(35,10,20,11);
		textcolor(WHITE);
		gotoxy(22,12);
		cputs("1. CHANGE PASSWORD");
		gotoxy(22,14);
		cputs("2. CHANGE WELCOME NOTE");
		gotoxy(22,16);
		cputs("0. MAIN MENU");
		gotoxy(25,18);
		cputs("ENTER THE CHOICE NUMBER : ");
		v=int(getche()-48);
		delay(100);
		if(v)
		{ switch(v)
		 {
			case 1:
			      chngpass();
			      break;

			case 2:
				chngwel();
				break;
			default:

				gotoxy(27,20);
				cputs("INVALID ENTRY");
				delay(1000);
				break;

		 }}
	}while(v!=0);
}
Beispiel #22
0
int qse_gettime (qse_ntime_t* t)
{
#if defined(_WIN32)
	SYSTEMTIME st;
	FILETIME ft;
	ULARGE_INTEGER li;

	/* 
	 * MSDN: The FILETIME structure is a 64-bit value representing the 
	 *       number of 100-nanosecond intervals since January 1, 1601 (UTC).
	 */

	GetSystemTime (&st);
	if (SystemTimeToFileTime (&st, &ft) == FALSE) return -1;

	li.LowPart = ft.dwLowDateTime;
	li.HighPart = ft.dwHighDateTime;

     /* li.QuadPart is in the 100-nanosecond intervals */
	t->sec = (li.QuadPart / (QSE_NSECS_PER_SEC / 100)) - EPOCH_DIFF_SECS;
	t->nsec = (li.QuadPart % (QSE_NSECS_PER_SEC / 100)) * 100;

	return 0;

#elif defined(__OS2__)

	APIRET rc;
	DATETIME dt;
	qse_btime_t bt;

	/* Can I use DosQuerySysInfo(QSV_TIME_LOW) and 
	 * DosQuerySysInfo(QSV_TIME_HIGH) for this instead? 
	 * Maybe, resolution too low as it returns values 
	 * in seconds. */

	rc = DosGetDateTime (&dt);
	if (rc != NO_ERROR) return -1;

	bt.year = dt.year - QSE_BTIME_YEAR_BASE;
	bt.mon = dt.month - 1;
	bt.mday = dt.day;
	bt.hour = dt.hours;
	bt.min = dt.minutes;
	bt.sec = dt.seconds;
	/*bt.msec = dt.hundredths * 10;*/
	bt.isdst = -1; /* determine dst for me */

	if (qse_timelocal (&bt, t) <= -1) return -1;
	t->nsec = QSE_MSEC_TO_NSEC(dt.hundredths * 10);
	return 0;

#elif defined(__DOS__)

	struct dostime_t dt;
	struct dosdate_t dd;
	qse_btime_t bt;

	_dos_gettime (&dt);
	_dos_getdate (&dd);

	bt.year = dd.year - QSE_BTIME_YEAR_BASE;
	bt.mon = dd.month - 1;
	bt.mday = dd.day;
	bt.hour = dt.hour;
	bt.min = dt.minute;
	bt.sec = dt.second;
	/*bt.msec = dt.hsecond * 10; */
	bt.isdst = -1; /* determine dst for me */

	if (qse_timelocal (&bt, t) <= -1) return -1;
	t->nsec = QSE_MSEC_TO_NSEC(dt.hsecond * 10);
	return 0;

#elif defined(macintosh)
	unsigned long tv;
	
	GetDateTime (&tv);
	
	t->sec = tv;
	tv->nsec = 0;
	
	return 0;

#elif defined(HAVE_GETTIMEOFDAY)
	struct timeval tv;
	int n;

	/* TODO: consider using clock_gettime() if it's avaialble.. -lrt may be needed */
	n = QSE_GETTIMEOFDAY (&tv, QSE_NULL);
	if (n == -1) return -1;

	t->sec = tv.tv_sec;
	t->nsec = QSE_USEC_TO_NSEC(tv.tv_usec);
	return 0;

#else
	t->sec = QSE_TIME (QSE_NULL);
	t->nsec = 0;

	return 0;
#endif
}
Beispiel #23
0
void funccall::entertainment()
{
	int v;
	struct dostime_t t;
	struct dosdate_t d;
	do
	{
		textbackground(BLUE);
		textcolor(MAGENTA);
		_setcursortype(_NORMALCURSOR);
		clrscr();
		textcolor(GREEN);
		box(4,4,4,4);
		box(4,4,6,6);
		textcolor(GREEN+BLINK);
		gotoxy(11,7);
		cputs("CREEPER");
		delay(502);
		_dos_gettime(&t);
		_dos_getdate(&d);
		box(21,6,52,4,222);
		gotoxy(54,6);
		printf("DATE:%2d/%02d/%02d\n",d.day,d.month,d.year);
		gotoxy(54,7);
		printf("Time:%2d:%02d:%02d.%02d\n",t.hour,t.minute,t.second,t.hsecond);

		gotoxy(25,9);
		textcolor(WHITE);
		cputs(">>> CREEPERTAINMENT >>>");
		textcolor(WHITE);
		gotoxy(2,2);
		cputs(">>>> LETS  TAKE ENTERTAINMENT TO NEXT LEVEL >>>>");
		box(35,10,20,11);
		textcolor(WHITE);
		gotoxy(22,12);
		cputs("1. MUSIC");
		gotoxy(22,14);
		cputs("2. GAMES");
		gotoxy(22,16);
		cputs("0. MAIN MENU");
		gotoxy(25,18);
		cputs("ENTER THE CHOICE NUMBER : ");
		v=int(getche()-48);
		delay(100);
		if(v)
		{ switch(v)
		 {
			case 1:
			      music();
			      break;

			case 2:
			       game();
				break;
			default:

				gotoxy(27,20);
				cputs("INVALID ENTRY");
				delay(1000);
				break;

		 }}
	}while(v!=0);
}
Beispiel #24
0
VOID TRoute::MakeArcMailName (PSZ pszAddress, CHAR Flag)
{
   USHORT i, Found;
   CHAR *p;
   class TAddress Addr;
   class TOutbound *Out;
   struct stat statbuf;
   struct dosdate_t d_date;

   _dos_getdate (&d_date);

   Addr.Parse (pszAddress);
   if (Addr.Zone == 0 || Cfg->MailAddress.Zone == Addr.Zone) {
      if (Addr.Point != 0)
         sprintf (ArcMailName, "%s\\%04x%04x.pnt\\%08lx.%s", Outbound, Addr.Net, Addr.Node, StringCrc32 (Addr.String, 0xFFFFFFFFL), Exts[d_date.dayofweek]);
      else
         sprintf (ArcMailName, "%s\\%08lx.%s", Outbound, StringCrc32 (Addr.String, 0xFFFFFFFFL), Exts[d_date.dayofweek]);
   }
   else {
      if (Addr.Point != 0)
         sprintf (ArcMailName, "%s.%03x\\%04x%04x.pnt\\%08lx.%s", Outbound, Addr.Zone, Addr.Net, Addr.Node, StringCrc32 (Addr.String, 0xFFFFFFFFL), Exts[d_date.dayofweek]);
      else
         sprintf (ArcMailName, "%s.%03x\\%08lx.%s", Outbound, Addr.Zone, StringCrc32 (Addr.String, 0xFFFFFFFFL), Exts[d_date.dayofweek]);
   }

   Found = FALSE;
   if ((p = strchr (ArcMailName, '\0')) != NULL) {
      p--;
      for (i = '0'; i <= '9' && Found == FALSE; i++) {
         *p = (CHAR)i;
         if (stat (ArcMailName, &statbuf) == 0) {
            Found = TRUE;
            if (statbuf.st_size == 0L) {
               unlink (ArcMailName);
               if (++i > '9')
                  i = '0';
               *p = (CHAR)i;
            }
         }
      }
      if (Found == FALSE)
         *p = '0';
   }

   if ((Out = new TOutbound (Cfg->Outbound)) != NULL) {
      if (Cfg->MailAddress.First () == TRUE)
         Out->DefaultZone = Cfg->MailAddress.Zone;
      Found = FALSE;
      Out->Add (Addr.Zone, Addr.Net, Addr.Node, Addr.Point, Addr.Domain);
      if (Out->First () == TRUE)
         do {
            if (!stricmp (Out->Complete, ArcMailName)) {
               Found = TRUE;
               break;
            }
         } while (Out->Next () == TRUE);

      if (Found == FALSE) {
         Out->New ();
         Out->Zone = Addr.Zone;
         Out->Net = Addr.Net;
         Out->Node = Addr.Node;
         Out->Point = Addr.Point;
         strcpy (Out->Domain, Addr.Domain);
         strcpy (Out->Name, &ArcMailName[strlen (ArcMailName) - 12]);
         strcpy (Out->Complete, ArcMailName);
         Out->Status = Flag;
         Out->ArcMail = TRUE;
         Out->TruncateAfter = TRUE;
         Out->Add ();
         Out->Update ();
      }

      delete Out;
   }
}