121 |
} |
} |
122 |
|
|
123 |
|
|
124 |
|
/* Always use the $users temp folder. */ |
125 |
|
static FILE* |
126 |
|
w32_tmpfile (char *tmp, DWORD tmplen) |
127 |
|
{ |
128 |
|
char id[16]; |
129 |
|
|
130 |
|
if (!GetTempPath (tmplen-17, tmp)) |
131 |
|
return NULL; |
132 |
|
if (tmp[strlen (tmp)-1] != '\\') |
133 |
|
strcat (tmp, "\\"); |
134 |
|
_snprintf (id, sizeof (id)-1, "%lu", GetTickCount ()); |
135 |
|
strcat (tmp, id); |
136 |
|
return fopen (tmp, "w+b"); |
137 |
|
} |
138 |
|
|
139 |
|
|
140 |
static int |
static int |
141 |
parse_attr_data (const char *keyid, attr_list_t *list) |
parse_attr_data (const char *keyid, attr_list_t *list) |
142 |
{ |
{ |
143 |
gpgme_error_t err; |
gpgme_error_t err; |
144 |
FILE *tmp; |
FILE *tmp; |
145 |
char *status; |
char *status, tmpnam[MAX_PATH+1]; |
146 |
BYTE *data; |
BYTE *data; |
147 |
DWORD ndata; |
DWORD ndata; |
148 |
|
|
150 |
if (err) |
if (err) |
151 |
return err; |
return err; |
152 |
|
|
153 |
if (ndata > 0) { |
if (ndata > 0 && (tmp = w32_tmpfile (tmpnam, MAX_PATH)) != NULL) { |
|
tmp = tmpfile (); |
|
154 |
fwrite (status, 1, strlen (status), tmp); |
fwrite (status, 1, strlen (status), tmp); |
155 |
fflush (tmp); |
fflush (tmp); |
156 |
rewind (tmp); |
rewind (tmp); |
157 |
|
|
158 |
ndata = parse_attr_list (tmp, data, ndata, list); |
ndata = parse_attr_list (tmp, data, ndata, list); |
159 |
fclose (tmp); |
fclose (tmp); |
160 |
|
DeleteFile (tmpnam); |
161 |
} |
} |
162 |
else |
else |
163 |
*list = NULL; |
*list = NULL; |