gcc 4.0 warning fixes.

diff --git a/dlls/avifil32/avifile.c b/dlls/avifil32/avifile.c
index 66b9bc5..901010d 100644
--- a/dlls/avifil32/avifile.c
+++ b/dlls/avifil32/avifile.c
@@ -1086,7 +1086,7 @@
 
   if (This->sInfo.dwSampleSize != 0) {
     /* fixed samplesize -- we can read over frame/block boundaries */
-    ULONG block = start;
+    LONG block = start;
     LONG offset = 0;
 
     /* convert start sample to block,offset pair */
diff --git a/dlls/avifil32/editstream.c b/dlls/avifil32/editstream.c
index 946eb59..eba563a 100644
--- a/dlls/avifil32/editstream.c
+++ b/dlls/avifil32/editstream.c
@@ -552,7 +552,7 @@
   IAVIEditStreamImpl *pEdit = NULL;
   PAVISTREAM          pStream;
   DWORD               startPos, endPos, streamNr, nStreams;
-  LONG                n;
+  ULONG               n;
 
   TRACE("(%p,%p,%p,%p,%ld,%ld)\n",iface,plStart,plLength,
 	pSource,lStart,lLength);
diff --git a/dlls/kernel/atom16.c b/dlls/kernel/atom16.c
index 601225e..698ad14 100644
--- a/dlls/kernel/atom16.c
+++ b/dlls/kernel/atom16.c
@@ -59,7 +59,7 @@
     HANDLE16    next;
     WORD        refCount;
     BYTE        length;
-    BYTE        str[1];
+    CHAR        str[1];
 } ATOMENTRY;
 
 typedef struct
diff --git a/dlls/kernel/format_msg.c b/dlls/kernel/format_msg.c
index ce5ca6b..9e21031 100644
--- a/dlls/kernel/format_msg.c
+++ b/dlls/kernel/format_msg.c
@@ -84,9 +84,9 @@
     }
     else
     {
-        int len = MultiByteToWideChar( CP_ACP, 0, mre->Text, -1, NULL, 0 );
+        int len = MultiByteToWideChar( CP_ACP, 0, (const char *)mre->Text, -1, NULL, 0 );
         if (!(buffer = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return NULL;
-        MultiByteToWideChar( CP_ACP, 0, mre->Text, -1, buffer, len );
+        MultiByteToWideChar( CP_ACP, 0, (const char*)mre->Text, -1, buffer, len );
     }
     TRACE("returning %s\n", wine_dbgstr_w(buffer));
     return buffer;
@@ -114,7 +114,7 @@
     }
     else
     {
-        int len = strlen(mre->Text) + 1;
+        int len = strlen((const char*)mre->Text) + 1;
         if (!(buffer = HeapAlloc( GetProcessHeap(), 0, len ))) return NULL;
         memcpy( buffer, mre->Text, len );
     }
diff --git a/dlls/kernel/lzexpand.c b/dlls/kernel/lzexpand.c
index 6fe8c5d..2979b75 100644
--- a/dlls/kernel/lzexpand.c
+++ b/dlls/kernel/lzexpand.c
@@ -455,7 +455,7 @@
 	FILETIME filetime;
 	struct	lzstate	*lzs;
 #define BUFLEN	1000
-	BYTE	buf[BUFLEN];
+	CHAR	buf[BUFLEN];
 	/* we need that weird typedef, for i can't seem to get function pointer
 	 * casts right. (Or they probably just do not like WINAPI in general)
 	 */
diff --git a/dlls/kernel/ne_segment.c b/dlls/kernel/ne_segment.c
index 4385fd3..4f4aff8 100644
--- a/dlls/kernel/ne_segment.c
+++ b/dlls/kernel/ne_segment.c
@@ -201,11 +201,10 @@
 
         case NE_RELTYPE_NAME:
             module = pModuleTable[rep->target1-1];
-            func_name = (char *)pModule + pModule->ne_imptab + rep->target2;
+            func_name = (BYTE *)pModule + pModule->ne_imptab + rep->target2;
             memcpy( buffer, func_name+1, *func_name );
             buffer[*func_name] = '\0';
-            func_name = buffer;
-            ordinal = NE_GetOrdinal( module, func_name );
+            ordinal = NE_GetOrdinal( module, buffer );
             address = NE_GetEntryPoint( module, ordinal );
 
             if (ERR_ON(fixup) && !address)
@@ -213,7 +212,7 @@
                 NE_MODULE *pTarget = NE_GetPtr( module );
                 ERR("No implementation for %.*s.%s, setting to 0xdeadbeef\n",
                     *((BYTE *)pTarget + pTarget->ne_restab),
-                    (char *)pTarget + pTarget->ne_restab + 1, func_name );
+                    (char *)pTarget + pTarget->ne_restab + 1, buffer );
             }
             if (!address) address = (FARPROC16) 0xdeadbeef;
             if (TRACE_ON(fixup))
@@ -222,7 +221,7 @@
                 TRACE("%d: %.*s.%s=%04x:%04x %s\n", i + 1,
                        *((BYTE *)pTarget + pTarget->ne_restab),
                        (char *)pTarget + pTarget->ne_restab + 1,
-                       func_name, HIWORD(address), LOWORD(address),
+                       buffer, HIWORD(address), LOWORD(address),
                        NE_GetRelocAddrName( rep->address_type, additive ) );
             }
             break;
diff --git a/dlls/kernel/relay16.c b/dlls/kernel/relay16.c
index 319dadf..48f8a8d 100644
--- a/dlls/kernel/relay16.c
+++ b/dlls/kernel/relay16.c
@@ -236,11 +236,11 @@
     ET_BUNDLE *bundle;
     ET_ENTRY *entry;
 
+    *pOrd = 0;
     if (!(pModule = NE_GetPtr( FarGetOwner16( GlobalHandle16( frame->module_cs ) ))))
         return NULL;
 
     max_offset = 0;
-    *pOrd = 0;
     bundle = (ET_BUNDLE *)((BYTE *)pModule + pModule->ne_enttab);
     do
     {
diff --git a/dlls/kernel/resource16.c b/dlls/kernel/resource16.c
index 3f178f7..ec69234 100644
--- a/dlls/kernel/resource16.c
+++ b/dlls/kernel/resource16.c
@@ -261,7 +261,7 @@
             if (!(pTypeInfo->type_id & 0x8000))
             {
                 BYTE *p = pResTab + pTypeInfo->type_id;
-                if ((*p == len) && !strncasecmp( p+1, str, len ))
+                if ((*p == len) && !strncasecmp( (char*)p+1, str, len ))
                 {
                     TRACE("  Found type '%s'\n", str );
                     return pTypeInfo;
@@ -308,7 +308,7 @@
         {
             if (pNameInfo->id & 0x8000) continue;
             p = pResTab + pNameInfo->id;
-            if ((*p == len) && !strncasecmp( p+1, str, len ))
+            if ((*p == len) && !strncasecmp( (char*)p+1, str, len ))
                 return pNameInfo;
         }
     }
diff --git a/dlls/kernel/snoop16.c b/dlls/kernel/snoop16.c
index 19e10d4..f2a7fc6 100644
--- a/dlls/kernel/snoop16.c
+++ b/dlls/kernel/snoop16.c
@@ -203,7 +203,7 @@
 	/* Now search the non-resident names table */
 
 	if (!*cpnt && pModule->nrname_handle) {
-		cpnt = (char *)GlobalLock16( pModule->nrname_handle );
+		cpnt = (unsigned char *)GlobalLock16( pModule->nrname_handle );
 		while (*cpnt) {
 			cpnt += *cpnt + 1 + sizeof(WORD);
 			if (*(WORD*)(cpnt+*cpnt+1) == ordinal) {
diff --git a/dlls/kernel/sync.c b/dlls/kernel/sync.c
index 4dd5236..54b6f16 100644
--- a/dlls/kernel/sync.c
+++ b/dlls/kernel/sync.c
@@ -831,7 +831,7 @@
  */
 BOOL WINAPI ReleaseSemaphore( HANDLE handle, LONG count, LONG *previous )
 {
-    NTSTATUS status = NtReleaseSemaphore( handle, count, previous );
+    NTSTATUS status = NtReleaseSemaphore( handle, count, (PULONG)previous );
     if (status) SetLastError( RtlNtStatusToDosError(status) );
     return !status;
 }
diff --git a/dlls/kernel/volume.c b/dlls/kernel/volume.c
index 2f43c09..0a6a23e 100644
--- a/dlls/kernel/volume.c
+++ b/dlls/kernel/volume.c
@@ -374,7 +374,7 @@
         }
     }
     if (label_len) RtlMultiByteToUnicodeN( label, (len-1) * sizeof(WCHAR),
-                                           &label_len, label_ptr, label_len );
+                                           &label_len, (char*)label_ptr, label_len );
     label_len /= sizeof(WCHAR);
     label[label_len] = 0;
     while (label_len && label[label_len-1] == ' ') label[--label_len] = 0;
@@ -386,7 +386,7 @@
  */
 static BOOL VOLUME_SetSuperblockLabel( enum fs_type type, HANDLE handle, const WCHAR *label )
 {
-    BYTE label_data[11];
+    CHAR label_data[11];
     DWORD offset, len;
 
     switch(type)