home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / cdtst105.zip / prfsam.c < prev    next >
C/C++ Source or Header  |  1998-12-20  |  1KB  |  54 lines

  1. /* PM stuff (C) 1998 Samuel Audet <guardia@cam.org> */
  2.  
  3. #define INCL_PM
  4. #include <os2.h>
  5.  
  6. HINI openProfile(char *filename)
  7. {
  8.    return PrfOpenProfile(WinQueryAnchorBlock(HWND_DESKTOP),filename);
  9. }
  10.  
  11. /* with string buffer, we don't need to have an exact size match */
  12. ULONG readProfile(HINI inifile, char *app, char *key, void *buffer,
  13.                     ULONG buffersize, BOOL stringbuffer)
  14. {
  15.    ULONG datasize;
  16.  
  17.    if(stringbuffer)
  18.       return PrfQueryProfileString(inifile, app, key, "", buffer, buffersize)-1;
  19.    else
  20.    {
  21.       PrfQueryProfileSize(inifile, app, key, &datasize);
  22.       if (datasize == buffersize)
  23.       {
  24.          PrfQueryProfileData(inifile, app, key, buffer, &datasize);
  25.          return datasize;
  26.       }
  27.       else
  28.          return 0;
  29.    }
  30. }
  31.  
  32. ULONG getProfileSize(HINI inifile, char *app, char *key)
  33. {
  34.    ULONG datasize = 0;
  35.    PrfQueryProfileSize(inifile, app, key, &datasize);
  36.    return datasize;
  37. }
  38.  
  39. /* buffersize = 0 means a null terminated string */
  40. BOOL writeProfile(HINI inifile, char *app, char *key, void *buffer, ULONG buffersize)
  41. {
  42.    if(buffersize)
  43.       return PrfWriteProfileData(inifile, app, key, buffer, buffersize);
  44.    else if(buffer && *(char *)buffer)
  45.       return PrfWriteProfileString(inifile, app, key, (char*)buffer);
  46.    else
  47.       return PrfWriteProfileString(inifile, app, key, NULL);
  48. }
  49.  
  50. BOOL closeProfile(HINI inifile)
  51. {
  52.    return PrfCloseProfile(inifile);
  53. }
  54.