1 #define INCL_WINSHELLDATA /* Or use INCL_WIN, INCL_PM, */
14 #define Prf_Open(pszFileName) SaveWinError(PrfOpenProfile(Perl_hab, (pszFileName)))
15 #define Prf_Close(hini) (!CheckWinError(PrfCloseProfile(hini)))
18 Prf_Get(pTHX_ HINI hini, PSZ app, PSZ key) {
23 if (CheckWinError(PrfQueryProfileSize(hini, app, key, &len))) return &PL_sv_undef;
26 if (CheckWinError(PrfQueryProfileData(hini, app, key, SvPVX(sv), &len))
27 || (len == 0 && (app == NULL || key == NULL))) { /* Somewhy needed. */
37 Prf_GetLength(HINI hini, PSZ app, PSZ key) {
40 if (CheckWinError(PrfQueryProfileSize(hini, app, key, &len))) return -1;
44 #define Prf_Set(hini, app, key, s, l) \
45 (!(CheckWinError(PrfWriteProfileData(hini, app, key, s, l))))
47 #define Prf_System(key) \
48 ( (key) ? ( (key) == 1 ? HINI_USERPROFILE \
49 : ( (key) == 2 ? HINI_SYSTEMPROFILE \
50 : (die("Wrong profile id %i", key), 0) )) \
60 PRFPROFILE info = { 257, user, 257, system};
62 if (CheckWinError(PrfQueryProfile(Perl_hab, &info))) return &PL_sv_undef;
63 if (info.cchUserName > 257 || info.cchSysName > 257)
64 die("Panic: Profile names too long");
65 av_push(av, newSVpv(user, info.cchUserName - 1));
66 av_push(av, newSVpv(system, info.cchSysName - 1));
73 Prf_SetUser(pTHX_ SV *sv)
77 PRFPROFILE info = { 257, user, 257, system};
79 if (!SvPOK(sv)) die("User profile name not defined");
80 if (SvCUR(sv) > 256) die("User profile name too long");
81 if (CheckWinError(PrfQueryProfile(Perl_hab, &info))) return 0;
82 if (info.cchSysName > 257)
83 die("Panic: System profile name too long");
84 info.cchUserName = SvCUR(sv) + 1;
85 info.pszUserName = SvPVX(sv);
86 return !CheckWinError(PrfReset(Perl_hab, &info));
89 MODULE = OS2::PrfDB PACKAGE = OS2::Prf PREFIX = Prf_
100 Prf_Get(hini, app, key)
105 RETVAL = Prf_Get(aTHX_ hini, app, key);
110 Prf_Set(hini, app, key, s, l = (SvPOK(ST(3)) ? SvCUR(ST(3)): -1))
118 Prf_GetLength(hini, app, key)
130 RETVAL = Prf_Profiles(aTHX);
138 RETVAL = Prf_SetUser(aTHX_ sv);