head 1.2; access; symbols OPENPKG_E1_MP_HEAD:1.2 OPENPKG_E1_MP:1.2; locks; strict; comment @# @; expand @o@; 1.2 date 2003.11.28.20.16.56; author rse; state dead; branches; next 1.1; 1.1 date 2003.09.13.19.38.25; author rse; state Exp; branches; next ; desc @@ 1.2 log @integrate Solaris patch into single patch @ text @--- methods/gpg.cc 2003-06-10 09:14:06.000000000 -0500 +++ methods/gpg.cc 2003-09-08 23:32:25.145463000 -0500 @@@@ -10,6 +10,9 @@@@ #include #include +#include +#include + #include class GPGMethod : public pkgAcqMethod @@@@ -173,6 +176,77 @@@@ } #undef STRCMP +static const char letters[] = +"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + +static int gen_tempname (char *tmpl) +{ + int len; + char *XXXXXX; + static uint64_t value; + uint64_t random_time_bits; + int count, fd = -1; + int save_errno = errno; + + len = strlen(tmpl); + if ( len < 6 || strcmp (&tmpl[len - 6], "XXXXXX")) { + __set_errno(EINVAL); + return -1; + } + + XXXXXX = &tmpl[len - 6]; + random_time_bits = time(NULL); + value += random_time_bits ^ getpid(); + + for ( count = 0; count < TMP_MAX; value += 7777, ++count) { + uint64_t v = value; + XXXXXX[0] = letters[v % 62]; + v /= 62; + XXXXXX[1] = letters[v % 62]; + v /= 62; + XXXXXX[2] = letters[v % 62]; + v /= 62; + XXXXXX[3] = letters[v % 62]; + v /= 62; + XXXXXX[4] = letters[v % 62]; + v /= 62; + XXXXXX[5] = letters[v % 62]; + + fd = mkdir(tmpl, S_IRUSR | S_IWUSR | S_IXUSR); + + if ( fd > 0 ) { + __set_errno(save_errno); + return fd; + } + else if ( errno != EEXIST ) { + return -1; + } + + } + + __set_errno(EEXIST); + return -1; +} + +static char *mkdtemp(char *templat) +{ + if (gen_tempname (templat)) + return NULL; + else + return templat; +} + +static void unsetenv(char *varname) +{ + char *tempstr = (char *)malloc(strlen(varname) + 2); + if ( tempstr == (char *)NULL ) { + return; + } + sprintf(tempstr, "%s=", varname); + tempstr[strlen(varname) + 1] = '\0'; + putenv(tempstr); + free(tempstr); +} char *getFileSigner(const char *file, const char *sigfile, @ 1.1 log @new package: apt 0.5.5cnc6 (Advanced Packaging Tool) @ text @@