#include "termsort.c" /* this C file is generated */
#include <parametrized.h> /* so is this */
-MODULE_ID("$Id: dump_entry.c,v 1.98 2012/02/29 01:04:17 tom Exp $")
+MODULE_ID("$Id: dump_entry.c,v 1.102 2012/12/15 18:25:56 tom Exp $")
#define INDENT 8
#define DISCARD(string) string = ABSENT_STRING
#define StrIndirect(j) ((sortmode == S_NOSORT) ? (j) : str_indirect[j])
#endif
+static void failed(const char *) GCC_NORETURN;
+
+static void
+failed(const char *s)
+{
+ perror(s);
+ ExitProgram(EXIT_FAILURE);
+}
+
static void
strncpy_DYN(DYNBUF * dst, const char *src, size_t need)
{
if (want > dst->size) {
dst->size += (want + 1024); /* be generous */
dst->text = typeRealloc(char, dst->size, dst->text);
+ if (dst->text == 0)
+ failed("strncpy_DYN");
}
(void) strncpy(dst->text + dst->used, src, need);
dst->used += need;
}
}
/* e.g., trimmed_sgr0 */
- if (capability != tterm->Strings[i])
+ if (capability != ABSENT_STRING &&
+ capability != CANCELLED_STRING &&
+ capability != tterm->Strings[i])
free(capability);
}
len += (int) (num_strings * 2);
*/
if (outbuf.used != 0) {
bool infodump = (outform != F_TERMCAP && outform != F_TCONVERR);
- char delim = infodump ? ',' : ':';
+ char delim = (char) (infodump ? ',' : ':');
int j;
for (j = (int) outbuf.used - 1; j > 0; --j) {
if (ch == '\n') {
;
} else if (isspace(UChar(ch))) {
- outbuf.used = j;
+ outbuf.used = (size_t) j;
} else if (!infodump && ch == '\\') {
- outbuf.used = j;
+ outbuf.used = (size_t) j;
} else if (ch == delim && (j == 0 || outbuf.text[j - 1] != '\\')) {
- outbuf.used = (j + 1);
+ outbuf.used = (size_t) (j + 1);
} else {
break;
}