From 2f201add36e413cecb7de466b895f65a693b130e Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 17 Jan 2006 17:09:05 +0000
Subject: [PATCH] fix bunch of gcc4 warnings

---
 Common/Views.cpp        | 119 +++++++++++++++++++++--------------
 DataStr/List.cpp        | 134 +++++++++++++++++++++++++++++-----------
 Mesh/3D_Extrude_Old.cpp |  19 +++---
 Mesh/Read_Mesh.cpp      |   8 ++-
 Numeric/Numeric.cpp     |   7 ++-
 5 files changed, 189 insertions(+), 98 deletions(-)

diff --git a/Common/Views.cpp b/Common/Views.cpp
index 909489488b..031084f5be 100644
--- a/Common/Views.cpp
+++ b/Common/Views.cpp
@@ -1,4 +1,4 @@
-// $Id: Views.cpp,v 1.181 2006-01-14 16:24:53 geuzaine Exp $
+// $Id: Views.cpp,v 1.182 2006-01-17 17:09:05 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -798,7 +798,8 @@ void ReadView(FILE *file, char *filename)
   while(1) {
 
     do {
-      fgets(str, 256, file);
+      if(!fgets(str, 256, file))
+	break;
       if(feof(file))
         break;
     } while(str[0] != '$');
@@ -809,7 +810,10 @@ void ReadView(FILE *file, char *filename)
     /*  F o r m a t  */
 
     if(!strncmp(&str[1], "PostFormat", 10)) {
-      fscanf(file, "%lf %d %d\n", &version, &format, &size);
+      if(!fscanf(file, "%lf %d %d\n", &version, &format, &size)){
+        Msg(GERROR, "Read error");
+        return;
+      }
       if(version < 1.0) {
         Msg(GERROR, "This post-processing file is too old (version %g < 1.0)",
             version);
@@ -841,58 +845,70 @@ void ReadView(FILE *file, char *filename)
 
       if(version <= 1.0) {
         Msg(DEBUG, "Detected post-processing view format <= 1.0");
-        fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
-               name, &v->NbTimeStep,
-               &v->NbSP, &v->NbVP, &v->NbTP,
-               &v->NbSL, &v->NbVL, &v->NbTL,
-               &v->NbST, &v->NbVT, &v->NbTT, &v->NbSS, &v->NbVS, &v->NbTS);
+        if(!fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
+		   name, &v->NbTimeStep,
+		   &v->NbSP, &v->NbVP, &v->NbTP,
+		   &v->NbSL, &v->NbVL, &v->NbTL,
+		   &v->NbST, &v->NbVT, &v->NbTT, &v->NbSS, &v->NbVS, &v->NbTS)){
+	  Msg(GERROR, "Read error");
+	  return;
+	}
         v->NbT2 = t2l = v->NbT3 = t3l = 0;
       }
       else if(version == 1.1) {
         Msg(DEBUG, "Detected post-processing view format 1.1");
-        fscanf(file,
-               "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
-               name, &v->NbTimeStep, &v->NbSP, &v->NbVP, &v->NbTP, &v->NbSL,
-               &v->NbVL, &v->NbTL, &v->NbST, &v->NbVT, &v->NbTT, &v->NbSS,
-               &v->NbVS, &v->NbTS, &v->NbT2, &t2l, &v->NbT3, &t3l);
+        if(!fscanf(file,
+		   "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
+		   name, &v->NbTimeStep, &v->NbSP, &v->NbVP, &v->NbTP, &v->NbSL,
+		   &v->NbVL, &v->NbTL, &v->NbST, &v->NbVT, &v->NbTT, &v->NbSS,
+		   &v->NbVS, &v->NbTS, &v->NbT2, &t2l, &v->NbT3, &t3l)){
+	  Msg(GERROR, "Read error");
+	  return;
+	}
       }
       else if(version == 1.2 || version == 1.3) {
         Msg(DEBUG, "Detected post-processing view format %g", version);
-        fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d "
-               "%d %d %d %d %d %d %d %d %d %d %d %d %d\n",
-               name, &v->NbTimeStep,
-               &v->NbSP, &v->NbVP, &v->NbTP,
-               &v->NbSL, &v->NbVL, &v->NbTL,
-               &v->NbST, &v->NbVT, &v->NbTT,
-               &v->NbSQ, &v->NbVQ, &v->NbTQ,
-               &v->NbSS, &v->NbVS, &v->NbTS,
-               &v->NbSH, &v->NbVH, &v->NbTH,
-               &v->NbSI, &v->NbVI, &v->NbTI,
-               &v->NbSY, &v->NbVY, &v->NbTY,
-	       &v->NbT2, &t2l, &v->NbT3, &t3l);
+        if(!fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d "
+		   "%d %d %d %d %d %d %d %d %d %d %d %d %d\n",
+		   name, &v->NbTimeStep,
+		   &v->NbSP, &v->NbVP, &v->NbTP,
+		   &v->NbSL, &v->NbVL, &v->NbTL,
+		   &v->NbST, &v->NbVT, &v->NbTT,
+		   &v->NbSQ, &v->NbVQ, &v->NbTQ,
+		   &v->NbSS, &v->NbVS, &v->NbTS,
+		   &v->NbSH, &v->NbVH, &v->NbTH,
+		   &v->NbSI, &v->NbVI, &v->NbTI,
+		   &v->NbSY, &v->NbVY, &v->NbTY,
+		   &v->NbT2, &t2l, &v->NbT3, &t3l)){
+	  Msg(GERROR, "Read error");
+	  return;
+	}
       }
       else if(version == 1.4) {
         Msg(DEBUG, "Detected post-processing view format 1.4");
-        fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d "
-               "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d "
-	       "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
-               name, &v->NbTimeStep,
-               &v->NbSP, &v->NbVP, &v->NbTP,
-               &v->NbSL, &v->NbVL, &v->NbTL,
-               &v->NbST, &v->NbVT, &v->NbTT,
-               &v->NbSQ, &v->NbVQ, &v->NbTQ,
-               &v->NbSS, &v->NbVS, &v->NbTS,
-               &v->NbSH, &v->NbVH, &v->NbTH,
-               &v->NbSI, &v->NbVI, &v->NbTI,
-               &v->NbSY, &v->NbVY, &v->NbTY,
-               &v->NbSL2, &v->NbVL2, &v->NbTL2,
-               &v->NbST2, &v->NbVT2, &v->NbTT2,
-               &v->NbSQ2, &v->NbVQ2, &v->NbTQ2,
-               &v->NbSS2, &v->NbVS2, &v->NbTS2,
-               &v->NbSH2, &v->NbVH2, &v->NbTH2,
-               &v->NbSI2, &v->NbVI2, &v->NbTI2,
-               &v->NbSY2, &v->NbVY2, &v->NbTY2,
-	       &v->NbT2, &t2l, &v->NbT3, &t3l);
+        if(!fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d "
+		   "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d "
+		   "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n",
+		   name, &v->NbTimeStep,
+		   &v->NbSP, &v->NbVP, &v->NbTP,
+		   &v->NbSL, &v->NbVL, &v->NbTL,
+		   &v->NbST, &v->NbVT, &v->NbTT,
+		   &v->NbSQ, &v->NbVQ, &v->NbTQ,
+		   &v->NbSS, &v->NbVS, &v->NbTS,
+		   &v->NbSH, &v->NbVH, &v->NbTH,
+		   &v->NbSI, &v->NbVI, &v->NbTI,
+		   &v->NbSY, &v->NbVY, &v->NbTY,
+		   &v->NbSL2, &v->NbVL2, &v->NbTL2,
+		   &v->NbST2, &v->NbVT2, &v->NbTT2,
+		   &v->NbSQ2, &v->NbVQ2, &v->NbTQ2,
+		   &v->NbSS2, &v->NbVS2, &v->NbTS2,
+		   &v->NbSH2, &v->NbVH2, &v->NbTH2,
+		   &v->NbSI2, &v->NbVI2, &v->NbTI2,
+		   &v->NbSY2, &v->NbVY2, &v->NbTY2,
+		   &v->NbT2, &t2l, &v->NbT3, &t3l)){
+	  Msg(GERROR, "Read error");
+	  return;
+	}
       }
       else {
         Msg(GERROR, "Unknown post-processing file format (version %g)",
@@ -906,7 +922,10 @@ void ReadView(FILE *file, char *filename)
 
       swap = 0;
       if(format == LIST_FORMAT_BINARY) {
-        fread(&testone, sizeof(int), 1, file);
+        if(!fread(&testone, sizeof(int), 1, file)){
+	  Msg(GERROR, "Read error");
+	  return;
+	}
         if(testone != 1) {
           Msg(INFO, "Swapping bytes from binary file");
           swap = 1;
@@ -1058,7 +1077,8 @@ void ReadView(FILE *file, char *filename)
     }
 
     do {
-      fgets(str, 256, file);
+      if(!fgets(str, 256, file))
+	Msg(GERROR, "Prematured end of file");
       if(feof(file))
         Msg(GERROR, "Prematured end of file");
     } while(str[0] != '$');
@@ -1319,7 +1339,10 @@ void WriteView(Post_View *v, char *filename, int format, int append)
 	    v->NbT2, List_Nbr(v->T2C), v->NbT3, List_Nbr(v->T3C));
     if(binary) {
       f = LIST_FORMAT_BINARY;
-      fwrite(&One, sizeof(int), 1, file);
+      if(!fwrite(&One, sizeof(int), 1, file)){
+	Msg(GERROR, "Write error");
+	return;
+      }
     }
     else
       f = LIST_FORMAT_ASCII;
diff --git a/DataStr/List.cpp b/DataStr/List.cpp
index ad5c4e4e8a..54481c9623 100644
--- a/DataStr/List.cpp
+++ b/DataStr/List.cpp
@@ -1,4 +1,4 @@
-// $Id: List.cpp,v 1.37 2006-01-06 00:34:21 geuzaine Exp $
+// $Id: List.cpp,v 1.38 2006-01-17 17:09:05 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -427,7 +427,7 @@ void swap_bytes(char *array, int size, int n)
 List_T *List_CreateFromFile(int n, int incr, int size, FILE * file, int format,
                             int swap)
 {
-  int i;
+  int i, error = 0;
   List_T *liste;
 
   if(!n){
@@ -439,34 +439,67 @@ List_T *List_CreateFromFile(int n, int incr, int size, FILE * file, int format,
   liste->n = n;
   switch (format) {
   case LIST_FORMAT_ASCII:
-    if(size == sizeof(double))
-      for(i = 0; i < n; i++)
-        fscanf(file, "%lf", (double *)&liste->array[i * size]);
-    else if(size == sizeof(float))
-      for(i = 0; i < n; i++)
-        fscanf(file, "%f", (float *)&liste->array[i * size]);
-    else if(size == sizeof(int))
-      for(i = 0; i < n; i++)
-        fscanf(file, "%d", (int *)&liste->array[i * size]);
-    else if(size == sizeof(char)) {
-      for(i = 0; i < n; i++)
-        liste->array[i * size] = fgetc(file);
+    if(size == sizeof(double)){
+      for(i = 0; i < n; i++){
+        if(!fscanf(file, "%lf", (double *)&liste->array[i * size])){
+	  error = 1;
+	  break;
+	}
+      }
     }
-    else {
+    else if(size == sizeof(float)){
+      for(i = 0; i < n; i++){
+        if(!fscanf(file, "%f", (float *)&liste->array[i * size])){
+	  error = 1;
+	  break;
+	}
+      }
+    }
+    else if(size == sizeof(int)){
+      for(i = 0; i < n; i++){
+        if(!fscanf(file, "%d", (int *)&liste->array[i * size])){
+	  error = 1;
+	  break;
+	}
+      }
+    }
+    else if(size == sizeof(char)){
+      for(i = 0; i < n; i++){
+	char c = (char)fgetc(file);
+	if(c == EOF){
+	  error = 1;
+	  break;
+	}
+	else{
+	  liste->array[i * size] = c;
+	}
+      }
+    }
+    else{
       Msg(GERROR, "Bad type of data to create list from (size = %d)", size);
-      return NULL;
+      error = 1;
     }
-    return liste;
+    break;
   case LIST_FORMAT_BINARY:
-    fread(liste->array, size, n, file);
+    if(!fread(liste->array, size, n, file)){
+      error = 1;
+      break;
+    }
     if(swap)
       swap_bytes(liste->array, size, n);
-    return liste;
+    break;
   default:
     Msg(GERROR, "Unknown list format");
-    return NULL;
+    error = 1;
+    break;
+  }
+
+  if(error){
+    Msg(GERROR, "Read error");
+    liste->n = 0;
   }
 
+  return liste;
 }
 
 void List_WriteToFile(List_T * liste, FILE * file, int format)
@@ -499,6 +532,7 @@ void List_WriteToFile(List_T * liste, FILE * file, int format)
     break;
   default:
     Msg(GERROR, "Unknown list format");
+    break;
   }
 }
 
@@ -507,7 +541,7 @@ void List_WriteToFile(List_T * liste, FILE * file, int format)
 List_T *List_CreateFromFileOld(int n, int incr, int size, FILE * file, int format,
 			       int swap)
 {
-  int i;
+  int i, error = 0;
   List_T *liste;
 
   if(!n){
@@ -519,35 +553,63 @@ List_T *List_CreateFromFileOld(int n, int incr, int size, FILE * file, int forma
   liste->n = n;
   switch (format) {
   case LIST_FORMAT_ASCII:
-    if(size == sizeof(double))
-      for(i = 0; i < n; i++)
-        fscanf(file, "%lf", (double *)&liste->array[i * size]);
-    else if(size == sizeof(float))
-      for(i = 0; i < n; i++)
-        fscanf(file, "%f", (float *)&liste->array[i * size]);
-    else if(size == sizeof(int))
-      for(i = 0; i < n; i++)
-        fscanf(file, "%d", (int *)&liste->array[i * size]);
-    else if(size == sizeof(char)) {
-      for(i = 0; i < n; i++) {
-        fscanf(file, "%c", (char *)&liste->array[i * size]);
+    if(size == sizeof(double)){
+      for(i = 0; i < n; i++){
+        if(!fscanf(file, "%lf", (double *)&liste->array[i * size])){
+	  error = 1;
+	  break;
+	}
+      }
+    }
+    else if(size == sizeof(float)){
+      for(i = 0; i < n; i++){
+        if(!fscanf(file, "%f", (float *)&liste->array[i * size])){
+	  error = 1;
+	  break;
+	}
+      }
+    }
+    else if(size == sizeof(int)){
+      for(i = 0; i < n; i++){
+        if(!fscanf(file, "%d", (int *)&liste->array[i * size])){
+	  error = 1;
+	  break;
+	}
+      }
+    }
+    else if(size == sizeof(char)){
+      for(i = 0; i < n; i++){
+        if(!fscanf(file, "%c", (char *)&liste->array[i * size])){
+	  error = 1;
+	  break;
+	}
         if(liste->array[i * size] == '^')
           liste->array[i * size] = '\0';
       }
     }
     else {
       Msg(GERROR, "Bad type of data to create list from (size = %d)", size);
-      return NULL;
+      error = 1;
     }
     return liste;
   case LIST_FORMAT_BINARY:
-    fread(liste->array, size, n, file);
+    if(!fread(liste->array, size, n, file)){
+      error = 1;
+      break;
+    }
     if(swap)
       swap_bytes(liste->array, size, n);
     return liste;
   default:
     Msg(GERROR, "Unknown list format");
-    return NULL;
+    error = 1;
+    break;
+  }
+
+  if(error){
+    Msg(GERROR, "Read error");
+    liste->n = 0;
   }
 
+  return liste;
 }
diff --git a/Mesh/3D_Extrude_Old.cpp b/Mesh/3D_Extrude_Old.cpp
index b62d7f20c8..59d374b6bb 100644
--- a/Mesh/3D_Extrude_Old.cpp
+++ b/Mesh/3D_Extrude_Old.cpp
@@ -1,4 +1,4 @@
-// $Id: 3D_Extrude_Old.cpp,v 1.39 2006-01-06 00:34:25 geuzaine Exp $
+// $Id: 3D_Extrude_Old.cpp,v 1.40 2006-01-17 17:09:05 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -86,11 +86,12 @@ static int compnxn(const void *a, const void *b)
 
 static void InitExtrudeParams(void)
 {
+  char *ret;
   char str[256];
 
   printf("Number of layers (default=1): ");
-  fgets(str, sizeof(str), stdin);
-  if(!strlen(str) || !strcmp(str, "\n"))
+  ret = fgets(str, sizeof(str), stdin);
+  if(!ret || !strlen(str) || !strcmp(str, "\n"))
     NbLayer = 1;
   else
     NbLayer = atoi(str);
@@ -106,8 +107,8 @@ static void InitExtrudeParams(void)
     fprintf(file, "%d\n", NbLayer);
   for(int i = 0; i < NbLayer; i++) {
     printf("Number of elements in layer %d (default=1): ", i + 1);
-    fgets(str, sizeof(str), stdin);
-    if(!strlen(str) || !strcmp(str, "\n"))
+    ret = fgets(str, sizeof(str), stdin);
+    if(!ret || !strlen(str) || !strcmp(str, "\n"))
       NbElmLayer[i] = 1;
     else
       NbElmLayer[i] = atoi(str);
@@ -115,8 +116,8 @@ static void InitExtrudeParams(void)
       fprintf(file, "%d\n", NbElmLayer[i]);
 
     printf("Depth of layer %d (default=1.0): ", i + 1);
-    fgets(str, sizeof(str), stdin);
-    if(!strlen(str) || !strcmp(str, "\n"))
+    ret = fgets(str, sizeof(str), stdin);
+    if(!ret || !strlen(str) || !strcmp(str, "\n"))
       hLayer[i] = 1.0;
     else
       hLayer[i] = atof(str);
@@ -124,8 +125,8 @@ static void InitExtrudeParams(void)
       fprintf(file, "%g\n", hLayer[i]);
 
     printf("Progression ratio for layer %d (default=1.0): ", i + 1);
-    fgets(str, sizeof(str), stdin);
-    if(!strlen(str) || !strcmp(str, "\n"))
+    ret = fgets(str, sizeof(str), stdin);
+    if(!ret || !strlen(str) || !strcmp(str, "\n"))
       parLayer[i] = 1.0;
     else
       parLayer[i] = atof(str);
diff --git a/Mesh/Read_Mesh.cpp b/Mesh/Read_Mesh.cpp
index ebcde4574d..ea7418abd6 100644
--- a/Mesh/Read_Mesh.cpp
+++ b/Mesh/Read_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Read_Mesh.cpp,v 1.97 2006-01-16 17:55:44 geuzaine Exp $
+// $Id: Read_Mesh.cpp,v 1.98 2006-01-17 17:09:05 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -185,7 +185,8 @@ void Read_Mesh_MSH(Mesh * M, FILE * fp)
 
   while(1) {
     do {
-      fgets(String, sizeof(String), fp);
+      if(!fgets(String, sizeof(String), fp))
+	break;
       if(feof(fp))
         break;
     } while(String[0] != '$');
@@ -559,7 +560,8 @@ void Read_Mesh_MSH(Mesh * M, FILE * fp)
     }
 
     do {
-      fgets(String, sizeof(String), fp);
+      if(!fgets(String, sizeof(String), fp))
+	Msg(GERROR, "Prematured end of mesh file");
       if(feof(fp))
         Msg(GERROR, "Prematured end of mesh file");
     } while(String[0] != '$');
diff --git a/Numeric/Numeric.cpp b/Numeric/Numeric.cpp
index c052ea5dfa..c119ce751f 100644
--- a/Numeric/Numeric.cpp
+++ b/Numeric/Numeric.cpp
@@ -1,4 +1,4 @@
-// $Id: Numeric.cpp,v 1.24 2006-01-06 00:34:27 geuzaine Exp $
+// $Id: Numeric.cpp,v 1.25 2006-01-17 17:09:05 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -45,7 +45,10 @@ int check_gsl()
 {
   // check version
   int major, minor;
-  sscanf(gsl_version, "%d.%d", &major, &minor);
+  if(!sscanf(gsl_version, "%d.%d", &major, &minor)){
+    Msg(FATAL, "Cannot retreive GSL version");
+    return 0;
+  }
   if(major < 1 || (major == 1 && minor < 2)) {
     Msg(FATAL1, "Your GSL version (%d.%d.X) has a bug in the singular value",
         major, minor);
-- 
GitLab