+// ====================================================== sizeof_file
+int sizeof_file (cpchar filename)
+{
+ struct stat status;
+
+ int ier = stat (filename, &status);
+ if (ier == HOK)
+ return status.st_size;
+ else
+ return NOTHING;
+}
+// ====================================================== read_file
+char* read_file (cpchar filename, int& size)
+{
+ size = 0;
+
+ struct stat status;
+ int ier = stat (filename, &status);
+ if (ier != HOK)
+ return NULL;
+
+ FILE* fic = fopen (filename, "r");
+ if (fic == NULL)
+ return NULL;
+
+ int lgalloc = status.st_size;
+ char* buffer = (char*) malloc (lgalloc+1);
+ if (buffer == NULL)
+ return NULL;
+
+ for (int car = fgetc (fic) ; car!=EOF && size<lgalloc ; car = fgetc(fic))
+ buffer [size++] = car;
+ fclose (fic);
+
+ printf ("read_file : lgalloc=%d, size=%d\n", lgalloc, size);
+ buffer [size++] = EOS;
+ return buffer;
+}
+// ====================================================== get_time
+cpchar get_time (string& buffer)
+{
+ char quand[24];
+ time_t tps;
+ time (&tps);
+ struct tm *temps = localtime (&tps);
+
+ sprintf (quand, "%d/%02d/%02d %02d:%02d:%02d",
+ 1900 + temps->tm_year, temps->tm_mon+1, temps->tm_mday,
+ temps->tm_hour, temps->tm_min, temps->tm_sec);
+
+ buffer = quand;
+ return buffer.c_str();
+}
+// ======================================================== requals
+bool requals (const double v1, const double v2)
+{
+ static const double Epsilon = 1e-6;
+ return v1 >= v2 - Epsilon && v1 <= v2 + Epsilon;
+}
+// ======================================================== requals
+bool requals (const double* lun, const double* lautre)
+{
+ return lun!=NULL && lautre!=NULL && requals (lun [0], lautre [0])
+ && requals (lun [1], lautre [1]) && requals (lun [2], lautre [2]) ;
+}
+// ======================================================== make_basename
+int make_basename (cpchar filename, string& base)
+{
+ const char slash = '/';
+ const char antis = '\\';
+ int lg = strlen (filename);
+ int ifin = -1;
+ int ideb = 0;
+ bool more = true;
+
+ for (int nc = lg-1 ; more && nc>=0 ; --nc)
+ {
+ char car = filename[nc];
+ if (car==slash || car==antis)
+ {
+ if (ifin >0)
+ {
+ ideb = nc + 1;
+ more = false;
+ }
+ }
+ else if (ifin<0)
+ ifin = nc;
+ }
+
+ if (ifin <0)
+ {
+ base = "undefined";
+ return HERR;
+ }
+
+ base = "";
+ for (int nc=ideb ; nc <= ifin ; ++nc)
+ base += filename[nc];
+ return HOK;
+}