- Timestamp:
- Jul 18, 2005, 3:15:18 AM (20 years ago)
- Location:
- trunk/src/emx
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/emx/ChangeLog.LIBC
-
Property cvs2svn:cvs-rev
changed from
1.106
to1.107
r2259 r2260 9 9 o Fixed a few smaller issues. 10 10 o Started fixing exec() backend. 11 o Fixed some more mktime / localtime bugs. 12 o Fixed crash on simple LIBC_ASSERT() caused by NULL format string. 13 o Generate device numbers for devices and pipes too. 14 o Fixed mixup of Dev and Inode during filehandle inheritance. 15 o Fixed __dup and __dup2 bug in relation to the FD_CLOEXEC clearing. 16 o Fixed bug in codepage normalization during setlocale(). 17 o Fixed bug in regex where the lock was overwritten after initialization. 18 o Switch the glibc locks to smutex to avoid leaking event semaphores. 19 o Added _smutex_try_request(). 11 20 12 21 2005-07-11: knut st. osmundsen <bird-gccos2-spam@anduin.net> -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/include/InnoTekLIBC/logstrict.h
-
Property cvs2svn:cvs-rev
changed from
1.14
to1.15
r2259 r2260 154 154 #define LIBCLOG_RETURN_INT(rc) LIBCLOG_RETURN_MSG((rc), "ret %d (%#x)\n", (rc), (rc)) 155 155 /** Macro to log an unsigned int return and do the return. */ 156 #define LIBCLOG_RETURN_UINT(rc) LIBCLOG_RETURN_MSG((rc), "ret %u (%#x)\n", (rc), (rc)) ;156 #define LIBCLOG_RETURN_UINT(rc) LIBCLOG_RETURN_MSG((rc), "ret %u (%#x)\n", (rc), (rc)) 157 157 /** Macro to log an long int return and do the return. */ 158 #define LIBCLOG_RETURN_LONG(rc) LIBCLOG_RETURN_MSG((rc), "ret %ld (%#lx)\n", (rc), (rc)) ;158 #define LIBCLOG_RETURN_LONG(rc) LIBCLOG_RETURN_MSG((rc), "ret %ld (%#lx)\n", (rc), (rc)) 159 159 /** Macro to log an unsigned long int return and do the return. */ 160 #define LIBCLOG_RETURN_ULONG(rc) LIBCLOG_RETURN_MSG((rc), "ret %lu (%#lx)\n", (rc), (rc)) ;160 #define LIBCLOG_RETURN_ULONG(rc) LIBCLOG_RETURN_MSG((rc), "ret %lu (%#lx)\n", (rc), (rc)) 161 161 /** Macro to log a pointer return and do the return. */ 162 #define LIBCLOG_RETURN_P(rc) LIBCLOG_RETURN_MSG((rc), "ret %p\n", (void*)(rc)) ;162 #define LIBCLOG_RETURN_P(rc) LIBCLOG_RETURN_MSG((rc), "ret %p\n", (void*)(rc)) 163 163 164 164 … … 182 182 #define LIBCLOG_ERROR_RETURN_INT(rc) LIBCLOG_ERROR_RETURN_MSG((rc), "ret %d (%#x)\n", (rc), (rc)) 183 183 /** Macro to log an unsigned int return user error and do the return. */ 184 #define LIBCLOG_ERROR_RETURN_UINT(rc) LIBCLOG_ERROR_RETURN_MSG((rc), "ret %u (%#x)\n", (rc), (rc)) ;184 #define LIBCLOG_ERROR_RETURN_UINT(rc) LIBCLOG_ERROR_RETURN_MSG((rc), "ret %u (%#x)\n", (rc), (rc)) 185 185 /** Macro to log an long int return user error and do the return. */ 186 #define LIBCLOG_ERROR_RETURN_LONG(rc) LIBCLOG_ERROR_RETURN_MSG((rc), "ret %ld (%#lx)\n", (rc), (rc)) ;186 #define LIBCLOG_ERROR_RETURN_LONG(rc) LIBCLOG_ERROR_RETURN_MSG((rc), "ret %ld (%#lx)\n", (rc), (rc)) 187 187 /** Macro to log an unsigned long int return user error and do the return. */ 188 #define LIBCLOG_ERROR_RETURN_ULONG(rc) LIBCLOG_ERROR_RETURN_MSG((rc), "ret %lu (%#lx)\n", (rc), (rc)) ;188 #define LIBCLOG_ERROR_RETURN_ULONG(rc) LIBCLOG_ERROR_RETURN_MSG((rc), "ret %lu (%#lx)\n", (rc), (rc)) 189 189 /** Macro to log a pointer return user error and do the return. */ 190 #define LIBCLOG_ERROR_RETURN_P(rc) LIBCLOG_ERROR_RETURN_MSG((rc), "ret %p\n", (void*)(rc)) ;190 #define LIBCLOG_ERROR_RETURN_P(rc) LIBCLOG_ERROR_RETURN_MSG((rc), "ret %p\n", (void*)(rc)) 191 191 192 192 -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/include/sys/smutex.h
-
Property cvs2svn:cvs-rev
changed from
1.2
to1.3
r2259 r2260 29 29 } 30 30 31 static __inline__ int _smutex_try_request (__volatile__ _smutex *sem) 32 { 33 return __cxchg (sem, 1) == 0; 34 } 35 31 36 32 37 static __inline__ void _smutex_release (__volatile__ _smutex *sem) -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/lgpl/posix/regcomp.c
-
Property cvs2svn:cvs-rev
changed from
1.3
to1.4
r2259 r2260 780 780 preg->used = sizeof (re_dfa_t); 781 781 782 __libc_lock_init (dfa->lock);782 /* __libc_lock_init (dfa->lock); - why init before memsetting the whole thing? */ 783 783 784 784 err = init_dfa (dfa, length); … … 790 790 return err; 791 791 } 792 __libc_lock_init (dfa->lock); /* bird */ 793 792 794 #ifdef DEBUG 793 795 dfa->re_str = re_malloc (char, length + 1); -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/lgpl/sysdeps/os2/bits/libc-lock.h
-
Property cvs2svn:cvs-rev
changed from
1.1
to1.2
r2259 r2260 21 21 #define _BITS_LIBC_LOCK_H 1 22 22 23 #include <InnoTekLIBC/thread.h> 24 25 #if 1 /* There is a hev leak problem with using fmutexes. */ 26 #include <sys/smutex.h> 27 28 typedef _smutex __libc_lock_t; 29 #define __libc_lock_define(CLASS,NAME) \ 30 CLASS __libc_lock_t NAME; 31 #define __libc_lock_define_initialized(CLASS,NAME) \ 32 CLASS __libc_lock_t NAME = 0; 33 #define __libc_lock_init(NAME) (NAME) = 0 34 #define __libc_lock_fini(NAME) (NAME) = 0 35 #define __libc_lock_lock(NAME) _smutex_request(&(NAME)) 36 #define __libc_lock_trylock(NAME) (!_smutex_try_request(&(NAME))) 37 #define __libc_lock_unlock(NAME) _smutex_release(&(NAME)) 38 39 #else 40 23 41 #include <sys/fmutex.h> 24 #include <InnoTekLIBC/thread.h>25 42 26 43 typedef _fmutex __libc_lock_t; … … 32 49 #define __libc_lock_fini(NAME) _fmutex_close(&(NAME)) 33 50 #define __libc_lock_lock(NAME) _fmutex_request(&(NAME), 0) 34 #define __libc_lock_trylock(NAME) _fmutex_req eust(&(NAME), _FMR_NOWAIT)51 #define __libc_lock_trylock(NAME) _fmutex_request(&(NAME), _FMR_NOWAIT) 35 52 #define __libc_lock_unlock(NAME) _fmutex_release(&(NAME)) 53 #endif 36 54 37 55 -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/locale/setlocale.c
-
Property cvs2svn:cvs-rev
changed from
1.24
to1.25
r2259 r2260 1311 1311 * Create locale object. 1312 1312 */ 1313 if (IS_ POSIX_LOCALE(pszLocale))1313 if (IS_C_LOCALE(pszLocale) || IS_POSIX_LOCALE(pszLocale)) 1314 1314 rc = UniCreateLocaleObject(UNI_MBS_STRING_POINTER, gszC, plobj); 1315 1315 else … … 1317 1317 if (rc) 1318 1318 { 1319 LIBC _ASSERTM_FAILED("UniCreateLocaleObject(,%p:{%s},) -> rc=%d\n", pszLocale, pszLocale, rc);1319 LIBCLOG_ERROR("UniCreateLocaleObject(,%p:{%s},) -> rc=%d\n", pszLocale, pszLocale, rc); 1320 1320 rc = -unierr2errno(rc); 1321 LIBCLOG_ RETURN_INT(rc);1321 LIBCLOG_ERROR_RETURN_INT(rc); 1322 1322 } 1323 1323 … … 1333 1333 if (pszCodepageActual) 1334 1334 { 1335 Ucs2Sb(ucsCodepage, pszCodepageActual, UniStrlen(ucsCodepage) + 1); 1335 size_t cchCodepageActual = UniStrlen(ucsCodepage); 1336 Ucs2Sb(ucsCodepage, pszCodepageActual, cchCodepageActual + 1); 1336 1337 1337 1338 /* 1338 1339 * For some common codeset specs we'll normalize the naming. 1339 1340 */ 1340 if (!strstr(pszCodepageActual, 1341 "ibm-1208" "Ibm-1208" "IBm-1208" "IBM-1208" "IbM-1208" "iBm-1208" "iBM-1208" "ibM-1208" 1342 "utf-8" "Utf-8" "UTf-8" "UTF-8" "UtF-8" "uTf-8" "uTF-8" "utF-8" 1343 "utf8" "Utf8" "UTf8" "UTF8" "UtF8" "uTf8" "uTF8" "utF8")) 1341 const char *psz; 1342 if ((psz = strstr(pszCodepageActual, 1343 "ibm-1208!" "Ibm-1208!" "IBm-1208!" "IBM-1208!" "IbM-1208!" "iBm-1208!" "iBM-1208!" "ibM-1208!" 1344 "utf-8!" "Utf-8!" "UTf-8!" "UTF-8!" "UtF-8!" "uTf-8!" "uTF-8!" "utF-8!" 1345 "utf8!" "Utf8!" "UTf8!" "UTF8!" "UtF8!" "uTf8!" "uTF8!" "utF8!")) != NULL 1346 && psz[cchCodepageActual] == '!') 1344 1347 memcpy(pszCodepageActual, "UTF-8", sizeof("UTF-8")); 1345 else if (!strstr(pszCodepageActual, 1346 "ibm-1200" "Ibm-1200" "IBm-1200" "IBM-1200" "IbM-1200" "iBm-1200" "iBM-1200" "ibM-1200" 1347 "ucs-2" "Ucs-2" "UCs-2" "UCS-2" "UcS-2" "uCs-2" "uCS-2" "ucS-2" 1348 "ucs2" "Ucs2" "UCs2" "UCS2" "UcS2" "uCs2" "uCS2" "ucS2")) 1348 else if ((psz = strstr(pszCodepageActual, 1349 "ibm-1200!" "Ibm-1200!" "IBm-1200!" "IBM-1200!" "IbM-1200!" "iBm-1200!" "iBM-1200!" "ibM-1200!" 1350 "ucs-2!" "Ucs-2!" "UCs-2!" "UCS-2!" "UcS-2!" "uCs-2!" "uCS-2!" "ucS-2!" 1351 "ucs2!" "Ucs2!" "UCs2!" "UCS2!" "UcS2!" "uCs2!" "uCS2!" "ucS2!")) != NULL 1352 && psz[cchCodepageActual] == '!') 1349 1353 memcpy(pszCodepageActual, "UCS-2", sizeof("UCS-2")); 1350 1354 } … … 1353 1357 } 1354 1358 1355 LIBC _ASSERTM_FAILED("UniCreateUconvObject(%ls,) -> rc=%d\n", (wchar_t *)ucsCodepage, rc);1359 LIBCLOG_ERROR("UniCreateUconvObject(%ls,) -> rc=%d\n", (wchar_t *)ucsCodepage, rc); 1356 1360 rc = -unierr2errno(rc); 1357 1361 } 1358 1362 1359 1363 UniFreeUconvObject(*puobj); 1360 LIBCLOG_ RETURN_INT(rc);1364 LIBCLOG_ERROR_RETURN_INT(rc); 1361 1365 } 1362 1366 … … 1423 1427 else 1424 1428 { 1425 LIBC _ASSERTM_FAILED("UniQueryLocaleInfo -> %d\n", rc);1429 LIBCLOG_ERROR("UniQueryLocaleInfo -> %d\n", rc); 1426 1430 rc = -unierr2errno(rc); 1427 1431 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/process/tls.c
-
Property cvs2svn:cvs-rev
changed from
1.7
to1.8
r2259 r2260 88 88 if (__atomic_increment_max(&gcTLSAllocated, __LIBC_TLS_MAX)) 89 89 { 90 LIBC_ASSERTM_FAILED("Out of TLS entries! cur=%d max=%d\n", gcTLSAllocated, __LIBC_TLS_MAX);91 LIBCLOG_ RETURN_INT(-1);90 errno -ENOMEM; 91 LIBCLOG_ERROR_RETURN(-1, "ret -1 - Out of TLS entries! cur=%d max=%d\n", gcTLSAllocated, __LIBC_TLS_MAX); 92 92 } 93 93 -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/DosEx.c
-
Property cvs2svn:cvs-rev
changed from
1.9
to1.10
r2259 r2260 302 302 gcbPools += cb; 303 303 304 LIBCLOG_ ERROR_RETURN_INT(0);304 LIBCLOG_RETURN_INT(0); 305 305 } 306 306 -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__dup.c
-
Property cvs2svn:cvs-rev
changed from
1.9
to1.10
r2259 r2260 12 12 #include "syscalls.h" 13 13 #include "b_fs.h" 14 #define __LIBC_LOG_GROUP __LIBC_LOG_GRP_IO 15 #include <InnoTekLIBC/logstrict.h> 14 16 15 17 int __dup(int fh) … … 64 66 65 67 /* 66 * Clear the FD_CLOEXEC flag as per SuS. 68 * OS/2 does, as SuS specifies, clear the noinherit flag. So, we update 69 * the flags of the new handle and in strict mode call __libc_FHSetFlags 70 * to invoke the out of sync check in there. 67 71 */ 68 unsigned fFlags = pFH->fFlags; 69 if (fFlags & ((FD_CLOEXEC << __LIBC_FH_FDFLAGS_SHIFT) | O_NOINHERIT)) 70 { 71 fFlags &= ~((FD_CLOEXEC << __LIBC_FH_FDFLAGS_SHIFT) | O_NOINHERIT); 72 __libc_FHSetFlags(pFH, hNew,fFlags); 73 } 72 pFHNew->fFlags &= ~((FD_CLOEXEC << __LIBC_FH_FDFLAGS_SHIFT) | O_NOINHERIT); 73 LIBC_ASSERT(!__libc_FHSetFlags(pFHNew, hNew, pFHNew->fFlags)); 74 74 } 75 75 else -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__dup2.c
-
Property cvs2svn:cvs-rev
changed from
1.8
to1.9
r2259 r2260 11 11 #include "syscalls.h" 12 12 #include "b_fs.h" 13 #define __LIBC_LOG_GROUP __LIBC_LOG_GRP_IO 14 #include <InnoTekLIBC/logstrict.h> 13 15 14 16 int __dup2(int fh, int fhNew) … … 97 99 98 100 /* 99 * Clear the FD_CLOEXEC flag as per SuS. 101 * OS/2 does, as SuS specifies, clear the noinherit flag. So, we update 102 * the flags of the new handle and in strict mode call __libc_FHSetFlags 103 * to invoke the out of sync check in there. 100 104 */ 101 unsigned fFlags = pFH->fFlags; 102 if (fFlags & ((FD_CLOEXEC << __LIBC_FH_FDFLAGS_SHIFT) | O_NOINHERIT)) 103 { 104 fFlags &= ~((FD_CLOEXEC << __LIBC_FH_FDFLAGS_SHIFT) | O_NOINHERIT); 105 __libc_FHSetFlags(pFH, hNew,fFlags); 106 } 105 pFHNew->fFlags &= ~((FD_CLOEXEC << __LIBC_FH_FDFLAGS_SHIFT) | O_NOINHERIT); 106 LIBC_ASSERT(!__libc_FHSetFlags(pFHNew, hNew, pFHNew->fFlags)); 107 107 } 108 108 else -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__spawnve.c
-
Property cvs2svn:cvs-rev
changed from
1.18
to1.19
r2259 r2260 502 502 * Ignore SIGCHLD signal. 503 503 */ 504 504 /** @todo proxy job control */ 505 bsd_signal(SIGCHLD, SIG_DFL); 506 bsd_signal(SIGSTOP, SIG_DFL); 507 bsd_signal(SIGTSTP, SIG_DFL); 508 bsd_signal(SIGCONT, SIG_DFL); 505 509 506 510 /* … … 509 513 pid_t pid = resc.codeTerminate; 510 514 LIBCLOG_MSG("Calling __libc_Back_processWait(P_PID,%d,,WEXITED,NULL)\n", pid); 511 pid_t pidEnded;512 515 for (;;) 513 516 { … … 515 518 do 516 519 /** @todo proxy job control */ 517 pidEnded= __libc_Back_processWait(P_PID, pid, &SigInfo, WEXITED, NULL);518 while ( pidEnded== -EINTR);519 if ( pidEnded <=0)520 rc = __libc_Back_processWait(P_PID, pid, &SigInfo, WEXITED, NULL); 521 while (rc == -EINTR); 522 if (rc < 0) 520 523 break; 521 LIBCLOG_MSG("__libc_Back_processWait(P_PID,%d,,WEXITED,NULL) returned pidEnded=%d si_code=%d si_status=%#x (%d)\n",522 pid, pidEnded, SigInfo.si_code, SigInfo.si_status, SigInfo.si_status);523 LIBC_ASSERTM( pidEnded == pid, "Expected pid %d and got %d!\n", pid, pidEnded);524 LIBCLOG_MSG("__libc_Back_processWait(P_PID,%d,,WEXITED,NULL) returned %d si_code=%d si_status=%#x (%d)\n", 525 pid, rc, SigInfo.si_code, SigInfo.si_status, SigInfo.si_status); 526 LIBC_ASSERTM(SigInfo.si_pid == pid, "Expected pid %d and got %d!\n", pid, SigInfo.si_pid); 524 527 if ( SigInfo.si_code == CLD_STOPPED 525 528 || SigInfo.si_code == CLD_CONTINUED) … … 568 571 } 569 572 570 LIBC_ASSERTM_FAILED("__libc_Back_processWait(P_PID,%d,,WEXITED,NULL) returned pidEnded=%d\n", pid, pidEnded);573 LIBC_ASSERTM_FAILED("__libc_Back_processWait(P_PID,%d,,WEXITED,NULL) returned %d\n", pid, rc); 571 574 __libc_spmTerm(__LIBC_EXIT_REASON_KILL + SIGABRT, 123); 572 575 for (;;) -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/b_ioFileOpen.c
-
Property cvs2svn:cvs-rev
changed from
1.7
to1.8
r2259 r2260 174 174 ULONG fulType; 175 175 ULONG fulDevFlags; 176 dev_t Dev;177 ino_t Inode;178 179 /*180 * If a new file the unix EAs needs to be established.181 */182 if ( (ulAction == FILE_CREATED)183 && !__libc_gfNoUnix)184 __libc_back_fsUnixAttribsSet(hFile, szNativePath, Mode, &Dev, &Inode);185 else186 Dev = __libc_back_fsPathCalcInodeAndDev(szNativePath, &Inode);187 188 176 189 177 /* … … 193 181 if (!rc) 194 182 { 183 dev_t Dev; 184 ino_t Inode; 195 185 switch (fulType & 0xff) 196 186 { … … 198 188 case HANDTYPE_FILE: 199 189 fLibc |= F_FILE; 190 /* If a new file the unix EAs needs to be established. */ 191 if ( (ulAction == FILE_CREATED) 192 && !__libc_gfNoUnix) 193 __libc_back_fsUnixAttribsSet(hFile, szNativePath, Mode, &Dev, &Inode); 194 else 195 Dev = __libc_back_fsPathCalcInodeAndDev(szNativePath, &Inode); 200 196 break; 201 197 case HANDTYPE_DEVICE: 202 198 fLibc |= F_DEV; 199 if (!(fulDevFlags & 0xf)) 200 Dev = makedev('c', 0); 201 else if (fulDevFlags & 1 /*KBD*/) 202 Dev = makedev('c', 1); 203 else if (fulDevFlags & 2 /*SCR*/) 204 Dev = makedev('c', 2); 205 else if (fulDevFlags & 4 /*NUL*/) 206 Dev = makedev('c', 4); 207 else /*if (fulDevFlags & 8 / *CLK* /)*/ 208 Dev = makedev('c', 8); 209 __libc_back_fsPathCalcInodeAndDev(szNativePath, &Inode); 203 210 break; 204 211 case HANDTYPE_PIPE: 205 212 fLibc |= F_PIPE; 213 Dev = makedev('p', 0); 214 __libc_back_fsPathCalcInodeAndDev(szNativePath, &Inode); 206 215 break; 207 216 } -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/filehandles.c
-
Property cvs2svn:cvs-rev
changed from
1.22
to1.23
r2259 r2260 193 193 return -1; 194 194 } 195 pFH-> Dev= u.pStds->aHandles[i].Inode;196 pFH-> Inode= u.pStds->aHandles[i].Dev;195 pFH->Inode = u.pStds->aHandles[i].Inode; 196 pFH->Dev = u.pStds->aHandles[i].Dev; 197 197 pFH->pFsInfo = __libc_back_fsInfoObjByDev(pFH->Dev); 198 198 } … … 902 902 int __libc_FHClose(int fh) 903 903 { 904 LIBCLOG_ENTER("fh=%d\n", fh); 904 905 __LIBC_PFH pFH; 905 906 int rc; … … 907 908 908 909 if (_fmutex_request(&gmtx, 0)) 909 return -1;910 LIBCLOG_ERROR_RETURN(-1, "ret -1 - fh=%d is not opened according to our table!\n", fh); 910 911 911 912 /* … … 914 915 if (!fhGet(fh)) 915 916 { 916 LIBC_ASSERTM_FAILED("fh=%d is not opened according to our table!\n", fh);917 917 _fmutex_release(&gmtx); 918 918 errno = EBADF; 919 return -1;919 LIBCLOG_ERROR_RETURN(-1, "ret -1 - fh=%d is not opened according to our table!\n", fh); 920 920 } 921 921 … … 967 967 _fmutex_release(&gmtx); 968 968 969 if (rc) 970 { 971 if (rc > 0) 972 _sys_set_errno(rc); 973 else 974 errno = -rc; 975 } 976 977 return rc; 969 if (!rc) 970 LIBCLOG_RETURN_INT(0); 971 if (rc > 0) 972 _sys_set_errno(rc); 973 else 974 errno = -rc; 975 LIBCLOG_ERROR_RETURN_INT(rc); 978 976 } 979 977 … … 1022 1020 ULONG fulMode; 1023 1021 unsigned fLibc; 1022 dev_t Dev = 0; 1024 1023 1025 1024 /* … … 1045 1044 fLibc = F_DEV; 1046 1045 /* @todo inherit O_NDELAY */ 1046 if (!(fulDevFlags & 0xf)) 1047 Dev = makedev('c', 0); 1048 else if (fulDevFlags & 1 /*KBD*/) 1049 Dev = makedev('c', 1); 1050 else if (fulDevFlags & 2 /*SCR*/) 1051 Dev = makedev('c', 2); 1052 else if (fulDevFlags & 4 /*NUL*/) 1053 Dev = makedev('c', 4); 1054 else /*if (fulDevFlags & 8 / *CLK* /)*/ 1055 Dev = makedev('c', 8); 1047 1056 break; 1048 1057 case HANDTYPE_PIPE: 1049 1058 fLibc = F_PIPE; 1059 Dev = makedev('p', 0); 1050 1060 break; 1051 1061 } … … 1079 1089 */ 1080 1090 rc = fhAllocate(fh, fLibc, sizeof(LIBCFH), NULL, &pFH, NULL, 1); 1081 if (rc) 1091 if (!rc) 1092 pFH->Dev = Dev; 1093 else 1082 1094 pFH = NULL; 1083 1095 } … … 1164 1176 ULONG fulState; 1165 1177 FS_VAR(); 1166 LIBC_ASSERT(((fFlags & O_NOINHERIT) == 0) == ((fFlags & (FD_CLOEXEC << __LIBC_FH_FDFLAGS_SHIFT)) != 0));1178 LIBC_ASSERT(((fFlags & O_NOINHERIT) != 0) == ((fFlags & (FD_CLOEXEC << __LIBC_FH_FDFLAGS_SHIFT)) != 0)); 1167 1179 1168 1180 FS_SAVE_LOAD(); -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/fs.c
-
Property cvs2svn:cvs-rev
changed from
1.19
to1.20
r2259 r2260 1037 1037 * getting the caseing resolved.) 1038 1038 */ 1039 LIBC_ASSERT(psz - pszNativePath == cchNativePath);1039 //LIBC_ASSERT(psz - pszNativePath == cchNativePath); - figure this one. 1040 1040 PFILEFINDBUF4 pFindBuf = (PFILEFINDBUF4)pachBuffer; 1041 1041 ULONG cFiles = 1; … … 1548 1548 } 1549 1549 else 1550 LIBC_ASSERT(chDrv == '/' || chDrv == '\\'); 1550 { 1551 LIBC_ASSERTM(major(Dev) != 'V', "Dev=%#x major=%#x (%c) chDrv=%c\n", Dev, major(Dev), major(Dev), chDrv); 1552 LIBC_ASSERTM(major(Dev) != 'U' || minor(chDrv) == 0, "Dev=%#x major=%#x (%c)\n", Dev, major(Dev), major(Dev)); 1553 } 1551 1554 1552 1555 return pFsInfo; -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/logstrict.c
-
Property cvs2svn:cvs-rev
changed from
1.20
to1.21
r2259 r2260 2096 2096 static int __libc_logVSNPrintf(char *pszBuffer, size_t cchBuffer, const char *pszFormat, va_list args) 2097 2097 { 2098 int 2099 int 2098 int rc; 2099 int cch; 2100 2100 __LIBC_XCPTREG XcptRegRec = { { (void *)-1, __libc_logXcptHandler }, }; 2101 2101 FS_VAR(); 2102 2102 2103 /* Ignore NULL format string. */ 2104 if (!pszFormat) 2105 { 2106 if (cchBuffer) 2107 *pszBuffer = '\0'; 2108 return 0; 2109 } 2110 2111 /* Get along with the formatting. */ 2103 2112 FS_SAVE_LOAD(); 2104 2113 DosSetExceptionHandler(&XcptRegRec.RegRec); -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/pathrewrite.c
-
Property cvs2svn:cvs-rev
changed from
1.8
to1.9
r2259 r2260 226 226 || !(paRules[i].fFlags & (__LIBC_PRWF_TYPE_FILE | __LIBC_PRWF_TYPE_DIR)) 227 227 || (paRules[i].fFlags & ~(__LIBC_PRWF_TYPE_FILE | __LIBC_PRWF_TYPE_DIR | __LIBC_PRWF_CASE_SENSITIVE | __LIBC_PRWF_CASE_INSENSITIVE))) 228 { 229 LIBC_ASSERTM_FAILED("rule %d: Invalid flags %#x\n", i, paRules[i].fFlags); 230 LIBCLOG_ERROR_RETURN_INT(-1); 231 } 228 LIBCLOG_ERROR_RETURN(-1, "ret -1 - rule %d: Invalid flags %#x\n", i, paRules[i].fFlags); 232 229 233 230 /* … … 236 233 cch = strlen(paRules[i].pszFrom); 237 234 if (cch != paRules[i].cchFrom) 238 { 239 LIBC_ASSERTM_FAILED("rule %d: invalid FROM length. actual=%d given=%d\n", i, cch, paRules[i].cchFrom); 240 LIBCLOG_ERROR_RETURN_INT(-1); 241 } 235 LIBCLOG_ERROR_RETURN(-1, "ret -1 - rule %d: invalid FROM length. actual=%d given=%d\n", i, cch, paRules[i].cchFrom); 242 236 if ( paRules[i].pszFrom[cch - 1] == '\\' 243 237 || paRules[i].pszFrom[cch - 1] == '/') 244 { 245 LIBC_ASSERTM_FAILED("rule %d: invalid FROM ends with slash.\n",i ); 246 LIBCLOG_ERROR_RETURN_INT(-1); 247 } 238 LIBCLOG_ERROR_RETURN(-1, "ret -1 - rule %d: invalid FROM ends with slash.\n",i ); 248 239 249 240 /* … … 252 243 cch = strlen(paRules[i].pszTo); 253 244 if (cch != paRules[i].cchTo || !cch) 254 { 255 LIBC_ASSERTM_FAILED("rule %d: invalid TO length. actual=%d given=%d\n", i, cch, paRules[i].cchTo); 256 LIBCLOG_ERROR_RETURN_INT(-1); 257 } 245 LIBCLOG_ERROR_RETURN(-1, "ret -1 - rule %d: invalid TO length. actual=%d given=%d\n", i, cch, paRules[i].cchTo); 258 246 if ( !(cch == 1 || (cch == 3 && paRules[i].pszTo[1] == ':')) 259 247 && ( paRules[i].pszTo[cch - 1] == '\\' 260 248 || paRules[i].pszTo[cch - 1] == '/') ) 261 { 262 LIBC_ASSERTM_FAILED("rule %d: invalid TO ends with slash.\n", i); 263 LIBCLOG_ERROR_RETURN_INT(-1); 264 } 265 249 LIBCLOG_ERROR_RETURN(-1, "ret -1 - rule %d: invalid TO ends with slash.\n", i); 266 250 267 251 /* … … 283 267 cch = pszEnd - psz; 284 268 if (cch > 255) 285 { 286 LIBC_ASSERTM_FAILED("rule %d: path component is too long (%d bytes, 255 is max)\n", i, cch); 287 LIBCLOG_ERROR_RETURN_INT(-1); 288 } 269 LIBCLOG_ERROR_RETURN(-1, "ret -1 - rule %d: path component is too long (%d bytes, 255 is max)\n", i, cch); 289 270 290 271 /* … … 314 295 if ( (pEntry->fFlags & DIRENTRY_FLAGS_CASE) 315 296 != (paRules[i].fFlags & __LIBC_PRWF_CASE_SENSITIVE ? DIRENTRY_FLAGS_CASE : 0)) 316 { 317 LIBC_ASSERTM_FAILED("rule %d: collides with an exiting rule in terms of case sensitivity.\n", i); 318 LIBCLOG_ERROR_RETURN_INT(-1); 319 } 297 LIBCLOG_ERROR_RETURN(-1, "ret -1 - rule %d: collides with an exiting rule in terms of case sensitivity.\n", i); 320 298 321 299 /* … … 326 304 { 327 305 if (pEntry->fType != (paRules[i].fFlags & __LIBC_PRWF_TYPE_FILE ? DIRENTRY_TYPE_FILE : DIRENTRY_TYPE_DIR)) 328 { 329 LIBC_ASSERTM_FAILED("rule %d: collides with existing rule for '%s' (not same type)\n", i, paRules[i].pszFrom); 330 LIBCLOG_ERROR_RETURN_INT(-1); 331 } 306 LIBCLOG_ERROR_RETURN(-1, "ret -1 - rule %d: collides with existing rule for '%s' (not same type)\n", i, paRules[i].pszFrom); 332 307 333 308 __LIBC_PPATHREWRITE pRule = pEntry->fType == DIRENTRY_TYPE_FILE … … 336 311 && ( pRule->cchTo != paRules[i].cchTo 337 312 || memicmp(pRule->pszTo, paRules[i].pszTo, paRules[i].cchTo))) 338 { 339 LIBC_ASSERTM_FAILED("rule %d: collides with existing rule for '%s', different rewriting: existing='%s' new='%s'\n", 340 i, paRules[i].pszFrom, pRule->pszTo, paRules[i].pszTo); 341 LIBCLOG_ERROR_RETURN_INT(-1); 342 } 313 LIBCLOG_ERROR_RETURN(-1, "ret -1 - rule %d: collides with existing rule for '%s', different rewriting: existing='%s' new='%s'\n", 314 i, paRules[i].pszFrom, pRule->pszTo, paRules[i].pszTo); 343 315 break; /* excellent, complete match of just an simple subdirectory. */ 344 316 } … … 349 321 */ 350 322 if (pEntry->fType != DIRENTRY_TYPE_DIR) 351 { 352 LIBC_ASSERTM_FAILED("rule %d: collides with a file rule for '%s'\n", i, pEntry->u.pFile->pszFrom); 353 LIBCLOG_ERROR_RETURN_INT(-1); 354 } 323 LIBCLOG_ERROR_RETURN(-1, "ret -1 - rule %d: collides with a file rule for '%s'\n", i, pEntry->u.pFile->pszFrom); 355 324 psz = pszEnd + 1; 356 325 pDir = pEntry->u.pDir; … … 672 641 */ 673 642 if (!pszPath || !*pszPath) 674 { 675 LIBC_ASSERTM_FAILED("bad path\n"); 676 LIBCLOG_ERROR_RETURN_INT(-1); 677 } 643 LIBCLOG_ERROR_RETURN(-1, "ret -1 - bad path\n"); 678 644 679 645 /* … … 697 663 if (cch > 255) 698 664 { 699 LIBC _ASSERTM_FAILED("path component is too long (%d bytes, 255 is max)\n", cch);665 LIBCLOG_ERROR_RETURN(-1, "ret -1 - path component is too long (%d bytes, 255 is max)\n", cch); 700 666 break; /* path component is to long, we don't accept rules like this one!! */ 701 667 } … … 755 721 { 756 722 if (cchBuf < cch) 757 { 758 LIBC_ASSERTM_FAILED("Buffer is too small (%d < %d)\n", cchBuf, cch); 759 LIBCLOG_ERROR_RETURN_INT(-1); 760 } 723 LIBCLOG_ERROR_RETURN(-1, "ret -1 - Buffer is too small (%d < %d)\n", cchBuf, cch); 761 724 memcpy(pszBuf, pRule->pszTo, cch); 762 725 LIBCLOG_MSG("rewritten: '%s' (complete)\n", pszBuf); … … 785 748 char *pszBufIn = pszBuf; 786 749 if (cchBuf < cchTotal) 787 { 788 LIBC_ASSERTM_FAILED("Buffer is too small (%d < %d)\n", cchBuf, cchTotal); 789 LIBCLOG_ERROR_RETURN_INT(-1); 790 } 750 LIBCLOG_ERROR_RETURN(-1, "ret -1 - Buffer is too small (%d < %d)\n", cchBuf, cchTotal); 791 751 memcpy(pszBuf, pRuleBest->pszTo, pRuleBest->cchTo); 792 752 pszBuf += pRuleBest->cchTo; -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/time/gmtime.c
-
Property cvs2svn:cvs-rev
changed from
1.10
to1.11
r2259 r2260 37 37 38 38 { 39 int lo, hi, i;40 41 39 /* Find an i such that _year_day[i] <= days < _year_day[i+1]. */ 42 43 lo = 0; hi = _YEARS - 1; 44 for (;;) 40 int hi = _YEARS - 1; 41 if ((int)_year_day[hi] < days) 42 LIBCLOG_ERROR_RETURN_P(NULL); 43 else if ((int)_year_day[0] > days) 44 LIBCLOG_ERROR_RETURN_P(NULL); 45 else 45 46 { 46 i = (lo + hi) / 2; 47 if (_year_day[i] > days) 48 hi = i - 1; 49 else if (_year_day[i+1] <= days) 50 lo = i + 1; 51 else 52 break; 47 int i = 0; 48 int lo = 0; 49 for (;;) 50 { 51 i = (lo + hi) / 2; 52 if (_year_day[i] > days) 53 hi = i - 1; 54 else if (_year_day[i+1] <= days) 55 lo = i + 1; 56 else 57 break; 58 } 59 dst->tm_year = i; 60 days -= _year_day[i]; 61 dst->tm_yday = days; 53 62 } 54 dst->tm_year = i;55 days -= _year_day[i];56 dst->tm_yday = days;57 63 } 58 64 -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/time/mktime.c
-
Property cvs2svn:cvs-rev
changed from
1.9
to1.10
r2259 r2260 14 14 t->tm_isdst, /*t->tm_gmtoff*/-2, /*t->tm_zone*/(void *)NULL, /*t->tm_zone*/""); 15 15 time64_t t64 = _mktime64(t); 16 if (t64 != -1 && t64 > TIME_T_MIN && t64 <= TIME_T_MAX)16 if (t64 != -1 && t64 >= TIME_T_MIN && t64 <= TIME_T_MAX) 17 17 { 18 18 time_t t32 = (time_t)t64; … … 54 54 } 55 55 56 t1 = (time_t)__mktime64(t);57 if (t1 == (time_t)-1)56 t1 = __mktime64(t); 57 if (t1 == -1) 58 58 return -1; 59 59 dst = _loc2gmt64(&t1, t->tm_isdst); -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.