Changeset 62 in svn


Ignore:
Timestamp:
2006-06-05T05:14:19Z (9 years ago)
Author:
Xuefer
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.