#include <h/utils.h>
#include <h/signals.h>
#include "m_mktemp.h"
+#include "makedir.h"
#include <fcntl.h>
+#include <limits.h>
extern char *mhdocdir;
msgs->msgnums[msgs->size++] = msgnum;
}
-/* Open a form or components file */
-int
-open_form(char **form, char *def)
-{
- int in;
- if (*form) {
- if ((in = open (etcpath (*form), O_RDONLY)) == NOTOK)
- adios (*form, "unable to open form file");
- } else {
- if ((in = open (etcpath (def), O_RDONLY)) == NOTOK)
- adios (def, "unable to open default components file");
- *form = def;
- }
- return in;
-}
-
/*
* Finds first occurrence of str in buf. buf is not a C string but a
}
-/* Returns copy of argument str with all characters converted to upper
- case, and trimmed whitespace (see cpytrim()) . */
-char *
-upcase (const char *str) {
- char *up = cpytrim (str);
-
- to_upper(up);
-
- return up;
-}
-
-
/*
* Scan for any 8-bit characters. Return 1 if they exist.
*
char buf[BUFSIZ];
*eightbit = 0;
- lseek (fd, (off_t) 0, SEEK_SET);
+ lseek(fd, 0, SEEK_SET);
while ((state = read (fd, buf, sizeof buf)) > 0) {
if (contains8bit (buf, buf + state)) {
return state == NOTOK ? NOTOK : OK;
}
+
+
+/*
+ * Convert an int to a char string.
+ */
+char *
+m_str(int value) {
+ return m_strn(value, 0);
+}
+
+
+/*
+ * Convert an int to a char string, of limited width if > 0.
+ */
+#define STR(s) #s
+#define SIZE(n) (sizeof STR(n)) /* Includes NUL. */
+
+char *
+m_strn(int value, unsigned int width) {
+ /* +1 to allow negative sign. */
+ static char buffer[SIZE(INT_MAX) + 1];
+
+ if (width == 0) {
+ snprintf(buffer, sizeof buffer, "%d", value);
+ } else {
+ int max_val = 1;
+ unsigned int i;
+ for (i = 0; i < (value >= 0 ? width : width-1); ++i) {
+ max_val *= 10;
+ }
+
+ if (abs(value) <= max_val && width > 0) {
+ snprintf(buffer, sizeof buffer, "%d", value);
+ } else {
+ snprintf(buffer, sizeof buffer, "%c", '?');
+ }
+ }
+
+ return buffer;
+}