* Peter Novodvorsky <petya@logic.ru>
*/
+#include "busybox.h"
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <errno.h>
#include <signal.h>
#include <sys/types.h>
-#include <sys/stat.h>
#include <sys/ioctl.h>
#include <sys/kd.h>
{
int fd;
+ if (argc>=2 && *argv[1]=='-') {
+ usage(loadacm_usage);
+ }
+
fd = open("/dev/tty", O_RDWR);
if (fd < 0) {
- fprintf(stderr, "Error opening /dev/tty1: %s\n", strerror(errno));
- return 1;
+ perror_msg_and_die("Error opening /dev/tty1");
}
if (screen_map_load(fd, stdin)) {
- fprintf(stderr, "Error loading acm: %s\n", strerror(errno));
- return 1;
+ perror_msg_and_die("Error loading acm");
}
write(fd, "\033(K", 3);
- return 0;
+ return EXIT_SUCCESS;
}
int screen_map_load(int fd, FILE * fp)
int parse_failed = 0;
int is_unicode;
- if (fstat(fp->_fileno, &stbuf))
+ if (fstat(fileno(fp), &stbuf))
perror("Cannot stat map file"), exit(1);
/* first try a UTF screen-map: either ASCII (no restriction) or binary (regular file) */
if (parse_failed) {
if (-1 == fseek(fp, 0, SEEK_SET)) {
if (errno == ESPIPE)
- fprintf(stderr,
- "16bit screen-map MUST be a regular file.\n"),
+ error_msg("16bit screen-map MUST be a regular file.\n"),
exit(1);
else
perror("fseek failed reading binary 16bit screen-map"),
perror("Cannot read [new] map from file"), exit(1);
#if 0
else
- fprintf(stderr, "Input screen-map is binary.\n");
+ error_msg("Input screen-map is binary.\n");
#endif
}
/* rewind... */
if (-1 == fseek(fp, 0, SEEK_SET)) {
if (errno == ESPIPE)
- fprintf(stderr,
- "Assuming 8bit screen-map - MUST be a regular file.\n"),
+ error_msg("Assuming 8bit screen-map - MUST be a regular file.\n"),
exit(1);
else
perror("fseek failed assuming 8bit screen-map"), exit(1);
if (-1 == fseek(fp, 0, SEEK_SET)) {
if (errno == ESPIPE)
/* should not - it succedeed above */
- fprintf(stderr, "fseek() returned ESPIPE !\n"),
+ error_msg("fseek() returned ESPIPE !\n"),
exit(1);
else
perror("fseek for binary 8bit screen-map"), exit(1);
perror("Cannot read [old] map from file"), exit(1);
#if 0
else
- fprintf(stderr, "Input screen-map is binary.\n");
+ error_msg("Input screen-map is binary.\n");
#endif
}
perror("PIO_SCRNMAP ioctl"), exit(1);
else
return 0;
- } else {
- fprintf(stderr, "Error parsing symbolic map\n");
- exit(1);
}
+ error_msg("Error parsing symbolic map\n");
+ return(1);
}
}
#endif
- if ((fp = fopen(omfil, "w")) == NULL) {
- perror(omfil);
- exit(1);
- }
+ fp = xfopen(omfil, "w");
#ifdef GIO_UNISCRNMAP
if (is_old_map) {
#endif