home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / PRF100.LZH / PRFSRC.LZH / READPRF.C < prev    next >
C/C++ Source or Header  |  1991-01-29  |  3KB  |  109 lines

  1. #define INCL_WINSHELLDATA
  2. #define INCL_WINPROGRAMLIST
  3. #include <os2.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include "prf.h"
  8.  
  9. /* must compile in far data model !!! */
  10.  
  11. static  FILE *outf;
  12.  
  13. void prog(PROGTITLE *ppt)
  14. {
  15.     PROGDETAILS *pd;
  16.     ULONG l;
  17.  
  18.     l = PrfQueryDefinition(HINI_USERPROFILE, ppt->hprog, NULL, 0L);
  19.     if( l > 0xffffL ){
  20.         printf("Too many programs.\n");
  21.         exit(1);
  22.     }
  23.     pd = zalloc((size_t)l);
  24.     pd->Length = sizeof(PROGDETAILS);
  25.     PrfQueryDefinition(HINI_USERPROFILE, ppt->hprog, pd, l);
  26.     fwrite(&l, sizeof(l), 1, outf);
  27.     fwrite(pd, (size_t)l, 1, outf);
  28. #if 0
  29.     printf("\t\tLength        : %lu\n", pd->Length);
  30.     printf("\t\tCategory      : %u\n",  pd->progt.progc);
  31.     printf("\t\tVisibility    : %u\n",  pd->progt.fbVisible);
  32.     printf("\t\tpszTitle      : %Fs\n",  pd->pszTitle      );
  33.     printf("\t\tpszExecutable : %Fs\n",  pd->pszExecutable );
  34.     printf("\t\tpszParameters : %Fs\n",  pd->pszParameters );
  35.     printf("\t\tpszStartupDir : %Fs\n",  pd->pszStartupDir );
  36.     printf("\t\tpszIcon       : %Fs\n",  pd->pszIcon       );
  37.     printf("\t\tpszEnvironment: %Fs\n",  pd->pszEnvironment);
  38. #endif
  39.     Zree(pd);
  40. }
  41.  
  42. void group(PROGTITLE *ppt)
  43. {
  44.     PROGTITLE *pt;
  45.     ULONG cnt, l;
  46.  
  47.     prog(ppt);  /* save group info */
  48.     l = PrfQueryProgramTitles(HINI_USERPROFILE, ppt->hprog , NULL, 0, &cnt);
  49.     if( l > 0xffffL ){
  50.         printf("Too many programs.\n");
  51.         exit(1);
  52.     }
  53.     if(l){
  54.         pt = zalloc((size_t)l);
  55.         PrfQueryProgramTitles(HINI_USERPROFILE, ppt->hprog , pt, l, &cnt);
  56.  
  57.         fwrite(&l, sizeof(l), 1, outf);
  58.         fwrite(&cnt, sizeof(cnt), 1, outf);
  59.         fwrite(pt, (size_t)l, 1, outf);
  60.  
  61.         for(l=0; l<cnt; l++){
  62. #if 1
  63.             printf("\tProgram:%Fs\n", pt[l].pszTitle);
  64. #endif
  65.             prog(&pt[l]);
  66.         }
  67.         Zree(pt);
  68.     }
  69.     else{
  70.         l = 0L;
  71.         fwrite(&l, sizeof(l), 1, outf);
  72.     }
  73. }
  74.  
  75.  
  76. void READmain(char *fname)
  77. {
  78.     PROGTITLE *pt;
  79.     ULONG cnt, l;
  80.  
  81.     outf = fopen(fname, "wb");
  82.     if(!outf){
  83.         perror(fname);
  84.         exit(1);
  85.     }
  86.  
  87.     l = PrfQueryProgramTitles(HINI_USERPROFILE, SGH_ROOT, NULL, 0, &cnt);
  88.     if( l > 0xffffL ){
  89.         printf("Too many groups\n");
  90.         exit(1);
  91.     }
  92.     pt = zalloc((size_t)l);
  93.  
  94.     PrfQueryProgramTitles(HINI_USERPROFILE, SGH_ROOT, pt, l, &cnt);
  95.  
  96.     fwrite(&l, sizeof(l), 1, outf);
  97.     fwrite(&cnt, sizeof(cnt), 1, outf);
  98.     fwrite(pt, (size_t)l, 1, outf);
  99.  
  100.     for(l=0; l<cnt; l++){
  101.         printf("Group:%Fs\n", pt[l].pszTitle);
  102.         group(&pt[l]);
  103.     }
  104.     Zree(pt);
  105.     fclose(outf);
  106.     exit(0);
  107. }
  108.  
  109.