home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 11 Util
/
11-Util.zip
/
PRF100.LZH
/
PRFSRC.LZH
/
READPRF.C
< prev
next >
Wrap
C/C++ Source or Header
|
1991-01-29
|
3KB
|
109 lines
#define INCL_WINSHELLDATA
#define INCL_WINPROGRAMLIST
#include <os2.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "prf.h"
/* must compile in far data model !!! */
static FILE *outf;
void prog(PROGTITLE *ppt)
{
PROGDETAILS *pd;
ULONG l;
l = PrfQueryDefinition(HINI_USERPROFILE, ppt->hprog, NULL, 0L);
if( l > 0xffffL ){
printf("Too many programs.\n");
exit(1);
}
pd = zalloc((size_t)l);
pd->Length = sizeof(PROGDETAILS);
PrfQueryDefinition(HINI_USERPROFILE, ppt->hprog, pd, l);
fwrite(&l, sizeof(l), 1, outf);
fwrite(pd, (size_t)l, 1, outf);
#if 0
printf("\t\tLength : %lu\n", pd->Length);
printf("\t\tCategory : %u\n", pd->progt.progc);
printf("\t\tVisibility : %u\n", pd->progt.fbVisible);
printf("\t\tpszTitle : %Fs\n", pd->pszTitle );
printf("\t\tpszExecutable : %Fs\n", pd->pszExecutable );
printf("\t\tpszParameters : %Fs\n", pd->pszParameters );
printf("\t\tpszStartupDir : %Fs\n", pd->pszStartupDir );
printf("\t\tpszIcon : %Fs\n", pd->pszIcon );
printf("\t\tpszEnvironment: %Fs\n", pd->pszEnvironment);
#endif
Zree(pd);
}
void group(PROGTITLE *ppt)
{
PROGTITLE *pt;
ULONG cnt, l;
prog(ppt); /* save group info */
l = PrfQueryProgramTitles(HINI_USERPROFILE, ppt->hprog , NULL, 0, &cnt);
if( l > 0xffffL ){
printf("Too many programs.\n");
exit(1);
}
if(l){
pt = zalloc((size_t)l);
PrfQueryProgramTitles(HINI_USERPROFILE, ppt->hprog , pt, l, &cnt);
fwrite(&l, sizeof(l), 1, outf);
fwrite(&cnt, sizeof(cnt), 1, outf);
fwrite(pt, (size_t)l, 1, outf);
for(l=0; l<cnt; l++){
#if 1
printf("\tProgram:%Fs\n", pt[l].pszTitle);
#endif
prog(&pt[l]);
}
Zree(pt);
}
else{
l = 0L;
fwrite(&l, sizeof(l), 1, outf);
}
}
void READmain(char *fname)
{
PROGTITLE *pt;
ULONG cnt, l;
outf = fopen(fname, "wb");
if(!outf){
perror(fname);
exit(1);
}
l = PrfQueryProgramTitles(HINI_USERPROFILE, SGH_ROOT, NULL, 0, &cnt);
if( l > 0xffffL ){
printf("Too many groups\n");
exit(1);
}
pt = zalloc((size_t)l);
PrfQueryProgramTitles(HINI_USERPROFILE, SGH_ROOT, pt, l, &cnt);
fwrite(&l, sizeof(l), 1, outf);
fwrite(&cnt, sizeof(cnt), 1, outf);
fwrite(pt, (size_t)l, 1, outf);
for(l=0; l<cnt; l++){
printf("Group:%Fs\n", pt[l].pszTitle);
group(&pt[l]);
}
Zree(pt);
fclose(outf);
exit(0);
}