home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / easrc.zip / History.c < prev    next >
Text File  |  1994-09-28  |  3KB  |  107 lines

  1. /***************************************************************************
  2.  *
  3.  * PROGRAM NAME: HISTORY.C
  4.  * -------------
  5.  *
  6.  * REVISION LEVEL: 1.2
  7.  * ---------------
  8.  *
  9.  * WHAT THIS PROGRAM DOES:
  10.  * -----------------------
  11.  *  Write history entries to the OS/2 history settings (.HISTORY EA)
  12.  *
  13.  * ROUTINES:
  14.  * ---------
  15.  *  History
  16.  *
  17.  * COMPILE REQUIREMENTS:
  18.  * ---------------------
  19.  *  IBM C++ Set/2 Compiler Version 2.0
  20.  *  IBM OS/2 2.1 Programmers Toolkit
  21.  *
  22.  * REQUIRED FILES:
  23.  * ---------------
  24.  *  CUTIL.H
  25.  *
  26.  * REQUIRED LIBRARIES:
  27.  * -------------------
  28.  *  OS2386.LIB    -   OS/2 32-Bit import library
  29.  *
  30.  * CHANGE LOG:
  31.  * -----------
  32.  * 
  33.  *  Ver.    Date      Comment
  34.  *  ----    --------  -------
  35.  *  1.20    02-19-94  First release
  36.  *
  37.  *  Copyright (C) 1994 Noller & Breining Software
  38.  *
  39.  ******************************************************************************/
  40. #define INCL_DOSMEMMGR
  41. #define INCL_DOSDATETIME
  42. #define INCL_DOSMISC
  43. #include <os2.h>
  44. #include <string.h>
  45. #include <cutil.h>
  46.  
  47. BOOL History (PCHAR szFileName, PCHAR szUser, PCHAR szEvent)
  48.     {
  49.     STRUC_EAT_DATA  arValue[MAXHISTORYLINES + 2];
  50.     DATETIME        DateTime;
  51.     CHAR            szNewEntry[CCHMAXHISTORY];
  52.     CHAR            szDate[20], szTime[20];
  53.     PUCHAR          IvTable[4];
  54.     ULONG           IvCount = 4;
  55.     ULONG           ul;
  56.     BOOL            bRC;
  57.  
  58.     IvTable[0] = szUser;
  59.     IvTable[1] = szEvent;
  60.     IvTable[2] = szDate;
  61.     IvTable[3] = szTime;
  62.  
  63.     DosGetDateTime (&DateTime);
  64.     GetDateTime (&DateTime, szTime, szDate);
  65.     DosInsertMessage (IvTable, IvCount,
  66.                       HISTORYTEMPLATE, sizeof (HISTORYTEMPLATE) + 1,
  67.                       szNewEntry, CCHMAXHISTORY-1, &ul);
  68.     szNewEntry[ul] = '\0';
  69.  
  70.     /* Prepare memory area for reading actual history EA */
  71.     DosAllocMem ((PPVOID) &arValue[0].pValue, MAXHISTORYLINES * CCHMAXHISTORY,
  72.          PAG_COMMIT | PAG_READ | PAG_WRITE);
  73.  
  74.     memset (arValue[0].pValue, '\0', MAXHISTORYLINES * CCHMAXHISTORY);
  75.  
  76.     arValue[0].uscValue = CCHMAXHISTORY;
  77.  
  78.     for (ul=1; ul<MAXHISTORYLINES; ul++)
  79.        {
  80.        arValue[ul].uscValue = CCHMAXHISTORY;
  81.        arValue[ul].pValue   = arValue[ul-1].pValue + CCHMAXHISTORY;
  82.        }
  83.  
  84.     arValue[MAXHISTORYLINES].pValue = NULL;
  85.     bRC = EAReadMV (szFileName, EA_HISTORYNAME, EAT_MVMT, arValue);
  86.  
  87.     if (bRC)
  88.         {
  89.         /* Search for last used element */
  90.         for (ul=0; (ul<MAXHISTORYLINES) && (arValue[ul].uscValue!=0); ul++)
  91.             ;
  92.  
  93.         /* Enter new history line */
  94.         arValue[ul].pValue   = szNewEntry;
  95.         arValue[ul].uscValue = strlen(szNewEntry);
  96.         arValue[ul].usEAType = EAT_ASCII;
  97.  
  98.         /* Write back history EA */
  99.         arValue[ul+1].pValue   = NULL;
  100.         arValue[ul+1].uscValue = 0;
  101.         bRC = EAWriteMV (szFileName, EA_HISTORYNAME, EAT_MVMT,
  102.             (ul == MAXHISTORYLINES) ? arValue+1 : arValue);
  103.         }
  104.  
  105.     return bRC;
  106.     }
  107.