Changeset 62 for trunk/lock.c


Ignore:
Timestamp:
2006-06-05T07:14:19+02:00 (8 years ago)
Author:
moo
Message:

use %TEMP %TMP for win32 (or $TEMP $TMP for *NIX)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lock.c

    r36 r62  
    66#ifndef ZEND_WIN32 
    77typedef int HANDLE; 
     8#   ifndef INVALID_HANDLE_VALUE 
     9#       define INVALID_HANDLE_VALUE -1 
     10#   endif 
    811#   define CloseHandle(h) close(h) 
    912#endif 
     
    7275{ 
    7376    HANDLE fd; 
    74     char myname[sizeof("/tmp/.xcache.lock") - 1 + 100]; 
     77    xc_lock_t *lck; 
     78    int size; 
     79    char *myname; 
    7580 
    7681    if (pathname == NULL) { 
    7782        static int i = 0; 
    78         snprintf(myname, sizeof(myname) - 1, "/tmp/.xcache.%d.%d.%d.lock", (int) getuid(), i ++, rand()); 
     83        const char default_tmpdir[] = { DEFAULT_SLASH, 't', 'm', 'p', '\0' }; 
     84        const char *tmpdir; 
     85 
     86        tmpdir = getenv("TEMP"); 
     87        if (!tmpdir) { 
     88            tmpdir = getenv("TMP"); 
     89            if (!tmpdir) { 
     90                tmpdir = default_tmpdir; 
     91            } 
     92        } 
     93        size = strlen(tmpdir) + sizeof("/.xcache.lock") - 1 + 3 * 10 + 100; 
     94        myname = do_alloca(size); 
     95        snprintf(myname, size - 1, "%s%c.xcache.%d.%d.%d.lock", tmpdir, DEFAULT_SLASH, (int) getuid(), i ++, rand()); 
    7996        pathname = myname; 
     97    } 
     98    else { 
     99        myname = NULL; 
    80100    } 
    81101 
    82102    fd = (HANDLE) open(pathname, O_RDWR|O_CREAT, 0666); 
    83103 
    84     if (fd > 0) { 
    85         xc_lock_t *lck = malloc(sizeof(lck[0])); 
    86         int size; 
     104    if (fd != INVALID_HANDLE_VALUE) { 
     105        lck = malloc(sizeof(lck[0])); 
    87106 
    88107#ifndef __CYGWIN__ 
     
    93112        lck->pathname = malloc(size); 
    94113        memcpy(lck->pathname, pathname, size); 
    95         return lck; 
    96114    } 
    97115    else { 
    98116        fprintf(stderr, "xc_fcntl_create: open(%s, O_RDWR|O_CREAT, 0666) failed:", pathname); 
    99         return NULL; 
     117        lck = NULL; 
    100118    } 
     119 
     120    if (myname) { 
     121        free_alloca(myname); 
     122    } 
     123 
     124    return lck; 
    101125} 
    102126/* }}} */ 
Note: See TracChangeset for help on using the changeset viewer.