Changeset 125


Ignore:
Timestamp:
Jan 19, 2006 3:58:29 AM (19 years ago)
Author:
bennylp
Message:

Initial, quick and dirty WinCE port with EVC4

Location:
pjproject/trunk/pjlib
Files:
11 added
25 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjlib/build/pjlib.dsp

    r75 r125  
    165165# End Source File 
    166166# End Group 
     167# Begin Group "src_compat" 
     168 
     169# PROP Default_Filter "" 
     170# Begin Source File 
     171 
     172SOURCE=..\src\pj\compat\unicode_win32.c 
     173# PROP Exclude_From_Build 1 
     174# End Source File 
     175# End Group 
    167176# Begin Source File 
    168177 
     
    426435 
    427436SOURCE=..\include\pj\compat\time.h 
     437# End Source File 
     438# Begin Source File 
     439 
     440SOURCE=..\include\pj\compat\unicode.h 
    428441# End Source File 
    429442# Begin Source File 
  • pjproject/trunk/pjlib/build/pjlib.vcproj

    r124 r125  
    55        Name="pjlib" 
    66        SccProjectName=""$/pjproject/pjlib/build", UIAAAAAA" 
    7         SccLocalPath="."> 
     7        SccAuxPath="" 
     8        SccLocalPath="." 
     9        SccProvider="MSSCCI:Microsoft Visual SourceSafe"> 
    810        <Platforms> 
    911                <Platform 
     
    13091311                                </File> 
    13101312                        </Filter> 
     1313                        <Filter 
     1314                                Name="Src Compat" 
     1315                                Filter=""> 
     1316                                <File 
     1317                                        RelativePath="..\src\pj\compat\unicode_win32.c"> 
     1318                                        <FileConfiguration 
     1319                                                Name="Debug|Win32" 
     1320                                                ExcludedFromBuild="TRUE"> 
     1321                                                <Tool 
     1322                                                        Name="VCCLCompilerTool"/> 
     1323                                        </FileConfiguration> 
     1324                                        <FileConfiguration 
     1325                                                Name="Release|Win32" 
     1326                                                ExcludedFromBuild="TRUE"> 
     1327                                                <Tool 
     1328                                                        Name="VCCLCompilerTool"/> 
     1329                                        </FileConfiguration> 
     1330                                </File> 
     1331                        </Filter> 
    13111332                </Filter> 
    13121333                <Filter 
     
    14771498                                <File 
    14781499                                        RelativePath="..\include\pj\compat\time.h"> 
     1500                                </File> 
     1501                                <File 
     1502                                        RelativePath="..\include\pj\compat\unicode.h"> 
    14791503                                </File> 
    14801504                                <File 
  • pjproject/trunk/pjlib/include/pj/compat/errno.h

    r65 r125  
    2020#define __PJ_COMPAT_ERRNO_H__ 
    2121 
    22 #if defined(PJ_WIN32) && PJ_WIN32 != 0 
     22#if defined(PJ_WIN32) && PJ_WIN32 != 0 || \ 
     23    defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE != 0 
    2324 
    2425    typedef unsigned long pj_os_err_type; 
  • pjproject/trunk/pjlib/include/pj/compat/os_linux.h

    r75 r125  
    7878#define PJ_HAS_MALLOC               1 
    7979#define PJ_OS_HAS_CHECK_STACK       0 
     80#define PJ_NATIVE_STRING_IS_UNICODE 0 
    8081 
    8182#define PJ_ATOMIC_VALUE_TYPE        long 
  • pjproject/trunk/pjlib/include/pj/compat/os_linux_kernel.h

    r75 r125  
    9797#define PJ_OS_HAS_CHECK_STACK       0 
    9898#define PJ_TERM_HAS_COLOR           0 
     99#define PJ_NATIVE_STRING_IS_UNICODE 0 
    99100 
    100101#define PJ_ATOMIC_VALUE_TYPE        int 
  • pjproject/trunk/pjlib/include/pj/compat/os_palmos.h

    r75 r125  
    7676#define PJ_HAS_HIGH_RES_TIMER       1 
    7777#define PJ_OS_HAS_CHECK_STACK       0 
     78#define PJ_NATIVE_STRING_IS_UNICODE 0 
    7879 
    7980#endif  /* __PJ_COMPAT_OS_PALMOS_H__ */ 
  • pjproject/trunk/pjlib/include/pj/compat/os_sunos.h

    r75 r125  
    7878#define PJ_HAS_MALLOC               1 
    7979#define PJ_OS_HAS_CHECK_STACK       0 
     80#define PJ_NATIVE_STRING_IS_UNICODE 0 
    8081 
    8182#define PJ_ATOMIC_VALUE_TYPE        long 
  • pjproject/trunk/pjlib/include/pj/compat/os_win32.h

    r75 r125  
    8282#define PJ_HAS_MALLOC               1 
    8383#define PJ_OS_HAS_CHECK_STACK       1 
     84#define PJ_NATIVE_STRING_IS_UNICODE 0 
    8485 
    8586#define PJ_ATOMIC_VALUE_TYPE        long 
  • pjproject/trunk/pjlib/include/pj/compat/socket.h

    r107 r125  
    9696 * Linux kernel specifics 
    9797 */ 
    98 #ifdef PJ_LINUX_KERNEL 
     98#if defined(PJ_LINUX_KERNEL) 
    9999#   include <linux/net.h> 
    100100#   include <asm/ioctls.h>              /* FIONBIO      */ 
     
    124124 * Windows specific 
    125125 */ 
    126 #ifdef PJ_WIN32 
    127     typedef int socklen_t;; 
     126#if defined(PJ_WIN32) || defined(PJ_WIN32_WINCE) 
     127    typedef int socklen_t; 
    128128#endif 
    129129 
  • pjproject/trunk/pjlib/include/pj/compat/string.h

    r65 r125  
    3636#if defined(_MSC_VER) 
    3737#  define strcasecmp    stricmp 
    38 #  define strncasecmp   strnicmp 
     38#  if defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0 
     39#   define strncasecmp  _strnicmp 
     40#  else 
     41#   define strncasecmp  strnicmp 
     42#  endif 
    3943#  define snprintf      _snprintf 
    4044#else 
  • pjproject/trunk/pjlib/include/pj/config.h

    r70 r125  
    4242#if defined(PJ_WIN32) && PJ_WIN32!=0 
    4343#  include <pj/compat/os_win32.h> 
     44#elif defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0 
     45#  include <pj/compat/os_win32_wince.h> 
    4446#elif defined(PJ_LINUX) && PJ_LINUX!=0 
    4547#  include <pj/compat/os_linux.h> 
     
    6668#elif defined (PJ_M_SPARC) && PJ_M_SPARC != 0 
    6769#   include <pj/compat/m_sparc.h> 
     70#elif defined (PJ_M_ARMV4) && PJ_M_ARMV4 != 0 
     71#   include <pj/compat/m_arm.h> 
    6872#else 
    6973#  error "Please specify target machine." 
  • pjproject/trunk/pjlib/include/pj/log.h

    r66 r125  
    7878    PJ_LOG_HAS_SENDER     =  64, /**< Include sender in the log [yes].       */ 
    7979    PJ_LOG_HAS_NEWLINE    = 128, /**< Terminate each call with newline [yes].*/ 
     80    PJ_LOG_HAS_CR         = 256, /**< Include carriage return [no].          */ 
    8081}; 
    8182 
  • pjproject/trunk/pjlib/include/pj/types.h

    r106 r125  
    387387    int wday; 
    388388 
    389     /** This represents day of the year, 0-365, where zero means 
     389    /* This represents day of the year, 0-365, where zero means 
    390390     *  1st of January. 
    391391     */ 
    392     int yday; 
     392    /*int yday; */ 
    393393 
    394394    /** This represents day of month: 1-31 */ 
  • pjproject/trunk/pjlib/src/pj/file_access_win32.c

    r66 r125  
    1818 */ 
    1919#include <pj/file_access.h> 
     20#include <pj/compat/unicode.h> 
    2021#include <pj/assert.h> 
    2122#include <pj/errno.h> 
     23#include <pj/string.h> 
     24#include <pj/os.h> 
    2225#include <windows.h> 
    2326#include <time.h> 
     
    2932{ 
    3033    HANDLE hFile; 
     34    PJ_DECL_UNICODE_TEMP_BUF(wfilename,256); 
    3135 
    3236    PJ_ASSERT_RETURN(filename != NULL, 0); 
    3337 
    34     hFile = CreateFile(filename, READ_CONTROL, FILE_SHARE_READ, NULL, 
     38    hFile = CreateFile(PJ_NATIVE_STRING(filename,wfilename), READ_CONTROL,  
     39                       FILE_SHARE_READ, NULL, 
    3540                       OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 
    3641    if (hFile == INVALID_HANDLE_VALUE) 
     
    5055    DWORD sizeLo, sizeHi; 
    5156    pj_off_t size; 
     57    PJ_DECL_UNICODE_TEMP_BUF(wfilename,256); 
    5258 
    5359    PJ_ASSERT_RETURN(filename != NULL, -1); 
    5460 
    55     hFile = CreateFile(filename, READ_CONTROL,  
     61    hFile = CreateFile(PJ_NATIVE_STRING(filename, wfilename), READ_CONTROL,  
    5662                       FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, 
    5763                       OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 
     
    8187PJ_DEF(pj_status_t) pj_file_delete(const char *filename) 
    8288{ 
     89    PJ_DECL_UNICODE_TEMP_BUF(wfilename,256); 
     90 
    8391    PJ_ASSERT_RETURN(filename != NULL, PJ_EINVAL); 
    8492 
    85     if (DeleteFile(filename) == FALSE) 
     93    if (DeleteFile(PJ_NATIVE_STRING(filename,wfilename)) == FALSE) 
    8694        return PJ_RETURN_OS_ERROR(GetLastError()); 
    8795 
     
    96104{ 
    97105    BOOL rc; 
     106    PJ_DECL_UNICODE_TEMP_BUF(woldname,256); 
     107    PJ_DECL_UNICODE_TEMP_BUF(wnewname,256); 
    98108 
    99109    PJ_ASSERT_RETURN(oldname!=NULL && newname!=NULL, PJ_EINVAL); 
    100110 
    101111#if PJ_WIN32_WINNT >= 0x0400 
    102     rc = MoveFileEx(oldname, newname,  
     112    rc = MoveFileEx(PJ_NATIVE_STRING(oldname,woldname),  
     113                    PJ_NATIVE_STRING(newname,wnewname),  
    103114                    MOVEFILE_COPY_ALLOWED|MOVEFILE_REPLACE_EXISTING); 
    104115#else 
    105     rc = MoveFile(oldname, newname); 
     116    rc = MoveFile(PJ_NATIVE_STRING(oldname, woldname),  
     117                  PJ_NATIVE_STRING(newname, wnewname)); 
    106118#endif 
    107119 
     
    116128                                         pj_time_val *time_val) 
    117129{ 
    118     SYSTEMTIME systemTime, localTime; 
    119     struct tm tm; 
    120  
    121     if (!FileTimeToSystemTime(file_time, &systemTime)) 
    122         return -1; 
    123  
    124     if (!SystemTimeToTzSpecificLocalTime(NULL, &systemTime, &localTime)) 
    125         return -1; 
    126  
    127     memset(&tm, 0, sizeof(struct tm)); 
    128     tm.tm_year = localTime.wYear - 1900; 
    129     tm.tm_mon = localTime.wMonth - 1; 
    130     tm.tm_mday = localTime.wDay; 
    131     tm.tm_hour = localTime.wHour; 
    132     tm.tm_min = localTime.wMinute; 
    133     tm.tm_sec = localTime.wSecond; 
    134     tm.tm_isdst = 0; 
    135  
    136     time_val->sec = mktime(&tm); 
    137     if (time_val->sec == (time_t)-1) 
    138         return -1; 
    139  
    140     time_val->msec = localTime.wMilliseconds; 
    141  
    142     return PJ_SUCCESS; 
     130    FILETIME local_file_time; 
     131    SYSTEMTIME localTime; 
     132    pj_parsed_time pt; 
     133 
     134    if (!FileTimeToLocalFileTime(file_time, &local_file_time)) 
     135        return PJ_RETURN_OS_ERROR(GetLastError()); 
     136 
     137    if (!FileTimeToSystemTime(file_time, &localTime)) 
     138        return PJ_RETURN_OS_ERROR(GetLastError()); 
     139 
     140    //if (!SystemTimeToTzSpecificLocalTime(NULL, &systemTime, &localTime)) 
     141    //    return PJ_RETURN_OS_ERROR(GetLastError()); 
     142 
     143    pj_memset(&pt, 0, sizeof(pt)); 
     144    pt.year = localTime.wYear; 
     145    pt.mon = localTime.wMonth-1; 
     146    pt.day = localTime.wDay; 
     147    pt.wday = localTime.wDayOfWeek; 
     148 
     149    pt.hour = localTime.wHour; 
     150    pt.min = localTime.wMinute; 
     151    pt.sec = localTime.wSecond; 
     152    pt.msec = localTime.wMilliseconds; 
     153 
     154    return pj_time_encode(&pt, time_val); 
    143155} 
    144156 
     
    151163    DWORD sizeLo, sizeHi; 
    152164    FILETIME creationTime, accessTime, writeTime; 
     165    PJ_DECL_UNICODE_TEMP_BUF(wfilename,256); 
    153166 
    154167    PJ_ASSERT_RETURN(filename!=NULL && stat!=NULL, PJ_EINVAL); 
    155168 
    156     hFile = CreateFile(filename, READ_CONTROL, FILE_SHARE_READ, NULL, 
     169    hFile = CreateFile(PJ_NATIVE_STRING(filename,wfilename), READ_CONTROL,  
     170                       FILE_SHARE_READ, NULL, 
    157171                       OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 
    158172    if (hFile == INVALID_HANDLE_VALUE) 
  • pjproject/trunk/pjlib/src/pj/file_io_win32.c

    r66 r125  
    1818 */ 
    1919#include <pj/file_io.h> 
     20#include <pj/compat/unicode.h> 
    2021#include <pj/errno.h> 
    2122#include <pj/assert.h> 
     
    4445                                  pj_oshandle_t *fd) 
    4546{ 
     47    PJ_DECL_UNICODE_TEMP_BUF(wpathname,256); 
    4648    HANDLE hFile; 
    4749    DWORD dwDesiredAccess = 0; 
     
    7779    dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL; 
    7880 
    79     hFile = CreateFile(pathname, dwDesiredAccess, dwShareMode, NULL, 
     81    hFile = CreateFile(PJ_NATIVE_STRING(pathname,wpathname),  
     82                       dwDesiredAccess, dwShareMode, NULL, 
    8083                       dwCreationDisposition, dwFlagsAndAttributes, NULL); 
    8184    if (hFile == INVALID_HANDLE_VALUE) { 
  • pjproject/trunk/pjlib/src/pj/ioqueue_common_abs.c

    r66 r125  
    216216         * of suggestions from Douglas C. Schmidt and Ken Keys. 
    217217         */ 
    218         int gp_rc; 
    219         struct sockaddr_in addr; 
    220         socklen_t addrlen = sizeof(addr); 
    221  
    222         gp_rc = getpeername(h->fd, (struct sockaddr*)&addr, &addrlen); 
    223         bytes_transfered = gp_rc; 
     218        { 
     219            int gp_rc; 
     220            struct sockaddr_in addr; 
     221            socklen_t addrlen = sizeof(addr); 
     222 
     223            gp_rc = getpeername(h->fd, (struct sockaddr*)&addr, &addrlen); 
     224            bytes_transfered = gp_rc; 
     225        } 
    224226#endif 
    225227 
     
    400402             * that error is easier to catch. 
    401403             */ 
    402 #           if defined(PJ_WIN32) && PJ_WIN32 != 0 
     404#           if defined(PJ_WIN32) && PJ_WIN32 != 0 || \ 
     405               defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE != 0 
    403406                rc = pj_sock_recv(h->fd, read_op->buf, &bytes_read, 0); 
    404407                //rc = ReadFile((HANDLE)h->fd, read_op->buf, read_op->size, 
  • pjproject/trunk/pjlib/src/pj/ioqueue_select.c

    r66 r125  
    222222    /* Set socket to nonblocking. */ 
    223223    value = 1; 
    224 #ifdef PJ_WIN32 
     224#if defined(PJ_WIN32) && PJ_WIN32!=0 || \ 
     225    defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0 
    225226    if (ioctlsocket(sock, FIONBIO, (u_long*)&value)) { 
    226227#else 
  • pjproject/trunk/pjlib/src/pj/log.c

    r66 r125  
    139139    /* Print the whole message to the string log_buffer. */ 
    140140    len = len + vsnprintf(pre, sizeof(log_buffer)-len, format, marker); 
    141     if (len > 0 && len < sizeof(log_buffer)-1) { 
     141    if (len > 0 && len < sizeof(log_buffer)-2) { 
     142        if (log_decor & PJ_LOG_HAS_CR) { 
     143            log_buffer[len++] = '\r'; 
     144        } 
    142145        if (log_decor & PJ_LOG_HAS_NEWLINE) { 
    143146            log_buffer[len++] = '\n'; 
     
    146149    } else { 
    147150        len = sizeof(log_buffer)-1; 
     151        if (log_decor & PJ_LOG_HAS_CR) { 
     152            log_buffer[sizeof(log_buffer)-3] = '\r'; 
     153        } 
    148154        if (log_decor & PJ_LOG_HAS_NEWLINE) { 
    149155            log_buffer[sizeof(log_buffer)-2] = '\n'; 
  • pjproject/trunk/pjlib/src/pj/os_core_win32.c

    r107 r125  
    537537    return InterlockedIncrement(&atomic_var->value); 
    538538#else 
    539 #   error Fix Me 
     539    return InterlockedIncrement(&atomic_var->value); 
    540540#endif 
    541541} 
     
    559559    return InterlockedDecrement(&atomic_var->value); 
    560560#else 
    561 #   error Fix me 
     561    return InterlockedDecrement(&atomic_var->value); 
    562562#endif 
    563563} 
     
    580580    InterlockedExchangeAdd( &atomic_var->value, value ); 
    581581#else 
    582 #   error Fix me 
     582    InterlockedExchangeAdd( &atomic_var->value, value ); 
    583583#endif 
    584584} 
     
    594594    return oldValue + value; 
    595595#else 
    596 #   error Fix me 
     596    long oldValue = InterlockedExchangeAdd( &atomic_var->value, value); 
     597    return oldValue + value; 
    597598#endif 
    598599} 
  • pjproject/trunk/pjlib/src/pj/os_time_ansi.c

    r66 r125  
    4949    pt->sec = local_time->tm_sec; 
    5050    pt->wday = local_time->tm_wday; 
    51     pt->yday = local_time->tm_yday; 
    5251    pt->msec = tv->msec; 
    5352 
     
    5857 * Encode parsed time to time value. 
    5958 */ 
    60 PJ_DEF(pj_status_t) pj_time_encode(const pj_parsed_time *pt, pj_time_val *tv); 
     59PJ_DEF(pj_status_t) pj_time_encode(const pj_parsed_time *pt, pj_time_val *tv) 
     60{ 
     61    struct tm local_time; 
     62 
     63    local_time.tm_year = pt->year-1900; 
     64    local_time.tm_mon = pt->mon; 
     65    local_time.tm_mday = pt->day; 
     66    local_time.tm_hour = pt->hour; 
     67    local_time.tm_min = pt->min; 
     68    local_time.tm_sec = pt->sec; 
     69    local_time.tm_isdst = 0; 
     70     
     71    tv->sec = mktime(&local_time); 
     72    tv->msec = pt->msec; 
     73 
     74    return PJ_SUCCESS; 
     75} 
    6176 
    6277/** 
  • pjproject/trunk/pjlib/src/pj/os_timestamp_win32.c

    r75 r125  
    2525    defined(PJ_HAS_PENTIUM) && PJ_HAS_PENTIUM!=0 && \ 
    2626    defined(_MSC_VER) 
     27 
    2728/* 
    2829 * Use rdtsc to get the OS timestamp. 
     
    3738    DWORD size; 
    3839 
     40#if defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0 
     41    rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
     42                      L"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", 
     43                      0, 0, &key); 
     44#else 
    3945    rc = RegOpenKey( HKEY_LOCAL_MACHINE, 
    4046                     "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", 
    4147                     &key); 
     48#endif 
     49 
    4250    if (rc != ERROR_SUCCESS) 
    4351        return PJ_RETURN_OS_ERROR(rc); 
  • pjproject/trunk/pjlib/src/pj/sock_bsd.c

    r106 r125  
    363363 
    364364    PJ_CHECK_STACK(); 
    365 #if defined(PJ_WIN32) && PJ_WIN32==1 
     365#if defined(PJ_WIN32) && PJ_WIN32!=0 || \ 
     366    defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0 
    366367    rc = closesocket(sock); 
    367368#else 
  • pjproject/trunk/pjlib/src/pjlib-test/main.c

    r118 r125  
    9191    } 
    9292 
     93    pj_log_set_decor(PJ_LOG_HAS_NEWLINE | PJ_LOG_HAS_TIME |  
     94                     PJ_LOG_HAS_MICRO_SEC); 
     95 
    9396    rc = test_main(); 
    9497 
  • pjproject/trunk/pjlib/src/pjlib-test/main_mod.c

    r65 r125  
    2525    printk(KERN_INFO "PJLIB test module loaded. Starting tests...\n"); 
    2626     
     27    pj_log_set_decor(PJ_LOG_HAS_NEWLINE | PJ_LOG_HAS_TIME |  
     28                     PJ_LOG_HAS_MICRO_SEC); 
     29 
    2730    test_main(); 
    2831 
  • pjproject/trunk/pjlib/src/pjlib-test/test.c

    r71 r125  
    4949 
    5050    pj_log_set_level(3); 
    51     pj_log_set_decor(PJ_LOG_HAS_NEWLINE | PJ_LOG_HAS_TIME |  
    52                      PJ_LOG_HAS_MICRO_SEC); 
    5351 
    5452    rc = pj_init(); 
Note: See TracChangeset for help on using the changeset viewer.