Changeset 62 for trunk/lock.c
- Timestamp:
- 06/05/2006 07:14:19 AM (7 years ago)
- Files:
-
- 1 modified
-
trunk/lock.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/lock.c
r36 r62 6 6 #ifndef ZEND_WIN32 7 7 typedef int HANDLE; 8 # ifndef INVALID_HANDLE_VALUE 9 # define INVALID_HANDLE_VALUE -1 10 # endif 8 11 # define CloseHandle(h) close(h) 9 12 #endif … … 72 75 { 73 76 HANDLE fd; 74 char myname[sizeof("/tmp/.xcache.lock") - 1 + 100]; 77 xc_lock_t *lck; 78 int size; 79 char *myname; 75 80 76 81 if (pathname == NULL) { 77 82 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()); 79 96 pathname = myname; 97 } 98 else { 99 myname = NULL; 80 100 } 81 101 82 102 fd = (HANDLE) open(pathname, O_RDWR|O_CREAT, 0666); 83 103 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])); 87 106 88 107 #ifndef __CYGWIN__ … … 93 112 lck->pathname = malloc(size); 94 113 memcpy(lck->pathname, pathname, size); 95 return lck;96 114 } 97 115 else { 98 116 fprintf(stderr, "xc_fcntl_create: open(%s, O_RDWR|O_CREAT, 0666) failed:", pathname); 99 returnNULL;117 lck = NULL; 100 118 } 119 120 if (myname) { 121 free_alloca(myname); 122 } 123 124 return lck; 101 125 } 102 126 /* }}} */

