Mercurial > pidgin.yaz
comparison libpurple/util.c @ 16869:ec79e3ad09a9
_mktmp() sucks, so use g_mkstemp() instead. This probably doesn't have to be done differently for win32 and elsewhere, but I don't want to be changing things right now.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Fri, 04 May 2007 04:01:23 +0000 |
parents | 0cd684e34403 |
children | ce2422ae793c bd0335d2615b |
comparison
equal
deleted
inserted
replaced
16866:f5d699d95744 | 16869:ec79e3ad09a9 |
---|---|
2520 | 2520 |
2521 FILE * | 2521 FILE * |
2522 purple_mkstemp(char **fpath, gboolean binary) | 2522 purple_mkstemp(char **fpath, gboolean binary) |
2523 { | 2523 { |
2524 const gchar *tmpdir; | 2524 const gchar *tmpdir; |
2525 #ifndef _WIN32 | |
2526 int fd; | 2525 int fd; |
2527 #endif | |
2528 FILE *fp = NULL; | 2526 FILE *fp = NULL; |
2529 | 2527 |
2530 g_return_val_if_fail(fpath != NULL, NULL); | 2528 g_return_val_if_fail(fpath != NULL, NULL); |
2531 | 2529 |
2532 if((tmpdir = (gchar*)g_get_tmp_dir()) != NULL) { | 2530 if((tmpdir = (gchar*)g_get_tmp_dir()) != NULL) { |
2533 if((*fpath = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", tmpdir, purple_mkstemp_templ)) != NULL) { | 2531 if((*fpath = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", tmpdir, purple_mkstemp_templ)) != NULL) { |
2534 #ifdef _WIN32 | 2532 #ifdef _WIN32 |
2535 char* result = _mktemp( *fpath ); | 2533 fd = g_mkstemp(*fpath); |
2536 if( result == NULL ) | |
2537 purple_debug(PURPLE_DEBUG_ERROR, "purple_mkstemp", | |
2538 "Problem creating the template\n"); | |
2539 else | |
2540 { | |
2541 if( (fp = g_fopen( result, binary?"wb+":"w+")) == NULL ) { | |
2542 purple_debug(PURPLE_DEBUG_ERROR, "purple_mkstemp", | |
2543 "Couldn't fopen() %s\n", result); | |
2544 } | |
2545 } | |
2546 #else | 2534 #else |
2547 if((fd = mkstemp(*fpath)) == -1) { | 2535 fd = mkstemp(*fpath)); |
2536 #endif | |
2537 if(fd == -1) { | |
2548 purple_debug(PURPLE_DEBUG_ERROR, "purple_mkstemp", | 2538 purple_debug(PURPLE_DEBUG_ERROR, "purple_mkstemp", |
2549 "Couldn't make \"%s\", error: %d\n", | 2539 "Couldn't make \"%s\", error: %d\n", |
2550 *fpath, errno); | 2540 *fpath, errno); |
2551 } else { | 2541 } else { |
2552 if((fp = fdopen(fd, "r+")) == NULL) { | 2542 if((fp = fdopen(fd, "r+")) == NULL) { |
2553 close(fd); | 2543 close(fd); |
2554 purple_debug(PURPLE_DEBUG_ERROR, "purple_mkstemp", | 2544 purple_debug(PURPLE_DEBUG_ERROR, "purple_mkstemp", |
2555 "Couldn't fdopen(), error: %d\n", errno); | 2545 "Couldn't fdopen(), error: %d\n", errno); |
2556 } | 2546 } |
2557 } | 2547 } |
2558 #endif | 2548 |
2559 if(!fp) { | 2549 if(!fp) { |
2560 g_free(*fpath); | 2550 g_free(*fpath); |
2561 *fpath = NULL; | 2551 *fpath = NULL; |
2562 } | 2552 } |
2563 } | 2553 } |