fprintf(stderr, "FATAL ERROR in function %s, line %d: %s", function, line, buffer);
fprintf(stderr, "This error is not recoverable, must exit here.\n");
#ifdef DEBUG_FUNC
- debug(function, line, "FATAL ERROR", buffer);
- debug(function, line, "FATAL ERROR", (char *)"This error is not recoverable, must exit here.\n");
+ debug(function, line, "FATAL", buffer);
+ debug(function, line, "FATAL", (char *)"This error is not recoverable, must exit here.\n");
#endif
exit(EXIT_FAILURE);
}
if (!addr)
fatal(function, line, "No memory for %d bytes.\n", size);
memset(addr, 0, size);
- return(addr);
+ return addr;
}
/* memory freeing with clearing memory to prevent using freed memory */
free(addr);
}
+/* fill buffer and be sure that it's result is 0-terminated, also remove newline */
+#define GETLINE(buffer, fp) _getline(buffer, sizeof(buffer), fp)
+static inline char *_getline(char *buffer, int size, FILE *fp)
+{
+ if (!fgets(buffer, size-1, fp))
+ return NULL;
+ buffer[size-1] = '\0';
+ if (!buffer[0])
+ return buffer;
+ if (buffer[strlen(buffer)-1] == '\n')
+ buffer[strlen(buffer)-1] = '\0';
+ if (buffer[strlen(buffer)-1] == '\r')
+ buffer[strlen(buffer)-1] = '\0';
+ return buffer;
+}
+