/* * Utilities * Intender * * Created by Lucas on 20/01/2007. * Distributed under the GNU General Public Licence * */ #include "Utilities.h" #include #include int fclean (char*s, FILE *fp) { int err = 0; char *p = strchr (s, '\n'); if (p != NULL) { *p = 0; } else { int c; while ((c=fgetc(fp))!='\n' && c != EOF) { } err=1; } return err; } /* -ed- deplace 'const' */ char *strFromStrings (char *str1, char const *str2) { if ((str1 == NULL) && (str2 == NULL)) return NULL; if (str1 == NULL) return strdup (str2); /* -ed- warning : heresie ! Ajoute strdup() */ if (str2 == NULL) return str1; char *strCat = NULL; size_t len1; if (str1 == NULL) len1 = 0; else len1 = strlen (str1); void *tmp = realloc (str1, len1 + strlen (str2) + 1); if (tmp != NULL) { strCat = tmp; if (str1 == NULL) { strcpy (strCat, ""); } strcat (strCat, str2); } else { free (strCat), strCat = NULL; } return strCat; } char *readFromFile (const char *path) { char *cData = NULL; FILE *fichier = fopen (path, "r"); printf ("opening %s\n", path); if (fichier != NULL) { char chaine[BUFSIZ]; unsigned long lines = 0; while (fgets (chaine, sizeof chaine, fichier) != NULL) { cData = strFromStrings (cData, chaine); if (cData == NULL) { puts ("memory error"); break; } lines++; } printf ("%lu lines read\n", lines); fclose (fichier); } return cData; } unsigned int writeToFile (const char *path, const char *data) { FILE *fichier = fopen (path, "w"); if (fichier != NULL) { unsigned int lgt = strlen (data); unsigned int i = 0; for (i = 0; i < lgt; i++) { fputc (data[i], fichier); } fclose (fichier); return 1; } else { return 0; } }