Avoid warnings.
[openssl.git] / crypto / cryptlib.c
index 21332378cf0bfcdd15d5df12e3dd5933ffd2987c..33c70afa33333aa9af1b6488ecd54737fc906aa5 100644 (file)
@@ -1,6 +1,6 @@
 /* crypto/cryptlib.c */
 /* ====================================================================
- * Copyright (c) 1998-2003 The OpenSSL Project.  All rights reserved.
+ * Copyright (c) 1998-2006 The OpenSSL Project.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -125,7 +125,7 @@ DECLARE_STACK_OF(CRYPTO_dynlock)
 IMPLEMENT_STACK_OF(CRYPTO_dynlock)
 
 /* real #defines in crypto.h, keep these upto date */
-static const char* lock_names[CRYPTO_NUM_LOCKS] =
+static const char* const lock_names[CRYPTO_NUM_LOCKS] =
        {
        "<<ERROR>>",
        "err",
@@ -182,16 +182,17 @@ static STACK_OF(CRYPTO_dynlock) *dyn_locks=NULL;
 
 
 static void (MS_FAR *locking_callback)(int mode,int type,
-       const char *file,int line)=NULL;
+       const char *file,int line)=0;
 static int (MS_FAR *add_lock_callback)(int *pointer,int amount,
-       int type,const char *file,int line)=NULL;
-static unsigned long (MS_FAR *id_callback)(void)=NULL;
+       int type,const char *file,int line)=0;
+static unsigned long (MS_FAR *id_callback)(void)=0;
+static void *(MS_FAR *idptr_callback)(void)=0;
 static struct CRYPTO_dynlock_value *(MS_FAR *dynlock_create_callback)
-       (const char *file,int line)=NULL;
+       (const char *file,int line)=0;
 static void (MS_FAR *dynlock_lock_callback)(int mode,
-       struct CRYPTO_dynlock_value *l, const char *file,int line)=NULL;
+       struct CRYPTO_dynlock_value *l, const char *file,int line)=0;
 static void (MS_FAR *dynlock_destroy_callback)(struct CRYPTO_dynlock_value *l,
-       const char *file,int line)=NULL;
+       const char *file,int line)=0;
 
 int CRYPTO_get_new_lockid(char *name)
        {
@@ -277,7 +278,7 @@ int CRYPTO_get_new_dynlockid(void)
        else
                /* If we found a place with a NULL pointer, put our pointer
                   in it.  */
-               sk_CRYPTO_dynlock_set(dyn_locks,i,pointer);
+               (void)sk_CRYPTO_dynlock_set(dyn_locks,i,pointer);
        CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
 
        if (i == -1)
@@ -319,7 +320,7 @@ void CRYPTO_destroy_dynlockid(int i)
 #endif
                        if (pointer->references <= 0)
                                {
-                               sk_CRYPTO_dynlock_set(dyn_locks, i, NULL);
+                               (void)sk_CRYPTO_dynlock_set(dyn_locks, i, NULL);
                                }
                        else
                                pointer = NULL;
@@ -436,6 +437,8 @@ unsigned long CRYPTO_thread_id(void)
                ret=(unsigned long)GetCurrentThreadId();
 #elif defined(GETPID_IS_MEANINGLESS)
                ret=1L;
+#elif defined(OPENSSL_SYS_BEOS)
+               ret=(unsigned long)find_thread(NULL);
 #else
                ret=(unsigned long)getpid();
 #endif
@@ -445,6 +448,28 @@ unsigned long CRYPTO_thread_id(void)
        return(ret);
        }
 
+void *(*CRYPTO_get_idptr_callback(void))(void)
+       {
+       return(idptr_callback);
+       }
+
+void CRYPTO_set_idptr_callback(void *(*func)(void))
+       {
+       idptr_callback=func;
+       }
+
+void *CRYPTO_thread_idptr(void)
+       {
+       void *ret=NULL;
+
+       if (idptr_callback == NULL)
+               ret = &errno;
+       else
+               ret = idptr_callback();
+
+       return ret;
+       }
+
 void CRYPTO_lock(int mode, int type, const char *file, int line)
        {
 #ifdef LOCK_DEBUG
@@ -465,8 +490,8 @@ void CRYPTO_lock(int mode, int type, const char *file, int line)
                else
                        rw_text="ERROR";
 
-               fprintf(stderr,"lock:%08lx:(%s)%s %-18s %s:%d\n",
-                       CRYPTO_thread_id(), rw_text, operation_text,
+               fprintf(stderr,"lock:%08lx/%08p:(%s)%s %-18s %s:%d\n",
+                       CRYPTO_thread_id(), CRYPTO_thread_idptr(), rw_text, operation_text,
                        CRYPTO_get_lock_name(type), file, line);
                }
 #endif
@@ -502,8 +527,8 @@ int CRYPTO_add_lock(int *pointer, int amount, int type, const char *file,
 
                ret=add_lock_callback(pointer,amount,type,file,line);
 #ifdef LOCK_DEBUG
-               fprintf(stderr,"ladd:%08lx:%2d+%2d->%2d %-18s %s:%d\n",
-                       CRYPTO_thread_id(),
+               fprintf(stderr,"ladd:%08lx/%0xp:%2d+%2d->%2d %-18s %s:%d\n",
+                       CRYPTO_thread_id(), CRYPTO_thread_idptr(),
                        before,amount,ret,
                        CRYPTO_get_lock_name(type),
                        file,line);
@@ -515,8 +540,8 @@ int CRYPTO_add_lock(int *pointer, int amount, int type, const char *file,
 
                ret= *pointer+amount;
 #ifdef LOCK_DEBUG
-               fprintf(stderr,"ladd:%08lx:%2d+%2d->%2d %-18s %s:%d\n",
-                       CRYPTO_thread_id(),
+               fprintf(stderr,"ladd:%08lx/%0xp:%2d+%2d->%2d %-18s %s:%d\n",
+                       CRYPTO_thread_id(), CRYPTO_thread_idptr(),
                        *pointer,amount,ret,
                        CRYPTO_get_lock_name(type),
                        file,line);
@@ -572,7 +597,7 @@ void OPENSSL_cpuid_setup(void)
 unsigned long *OPENSSL_ia32cap_loc(void) { return NULL; }
 #endif
 int OPENSSL_NONPIC_relocated = 0;
-#if !defined(OPENSSL_CPUID_SETUP)
+#if !defined(OPENSSL_CPUID_SETUP) && !defined(OPENSSL_CPUID_OBJ)
 void OPENSSL_cpuid_setup(void) {}
 #endif
 
@@ -661,12 +686,15 @@ int OPENSSL_isservice(void)
 #endif
     else                               return 0;
 }
+#else
+int OPENSSL_isservice(void) { return 0; }
 #endif
 
 void OPENSSL_showfatal (const char *fmta,...)
 { va_list ap;
   TCHAR buf[256];
   const TCHAR *fmt;
+#ifdef STD_ERROR_HANDLE        /* what a dirty trick! */
   HANDLE h;
 
     if ((h=GetStdHandle(STD_ERROR_HANDLE)) != NULL &&
@@ -677,9 +705,10 @@ void OPENSSL_showfatal (const char *fmta,...)
        va_end (ap);
        return;
     }
+#endif
 
     if (sizeof(TCHAR)==sizeof(char))
-       fmt=fmta;
+       fmt=(const TCHAR *)fmta;
     else do
     { int    keepgoing;
       size_t len_0=strlen(fmta)+1,i;
@@ -730,21 +759,7 @@ void OPENSSL_showfatal (const char *fmta,...)
     }
     else
 #endif
-    {  MSGBOXPARAMS         m;
-
-       m.cbSize             = sizeof(m);
-       m.hwndOwner          = NULL;
-       m.lpszCaption        = _T("OpenSSL: FATAL");
-       m.dwStyle            = MB_OK;
-       m.hInstance          = NULL;
-       m.lpszIcon           = IDI_ERROR;
-       m.dwContextHelpId    = 0;
-       m.lpfnMsgBoxCallback = NULL;
-       m.dwLanguageId       = MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US);
-       m.lpszText           = buf;
-
-       MessageBoxIndirect (&m);
-    }
+       MessageBox (NULL,buf,_T("OpenSSL: FATAL"),MB_OK|MB_ICONSTOP);
 }
 #else
 void OPENSSL_showfatal (const char *fmta,...)