size_t bufsize = 0;
char *suffix = xstrdup ("");
int suffixlen = 0;
+ const char *out_fname = 0;
if (argc >= 2 && argv[1][0] == '-')
{
argv[2], strerror (errno));
return 1;
}
+ out_fname = argv[2];
}
else
out = stdout;
if (entryname)
fprintf (out, "}\n\n");
- fwrite (suffix, 1, suffixlen, out);
+ if (fwrite (suffix, 1, suffixlen, out) != suffixlen)
+ {
+ if (out_fname)
+ grub_util_error ("cannot write to `%s': %s",
+ out_fname, strerror (errno));
+ else
+ grub_util_error ("cannot write to the stdout: %s", strerror (errno));
+ }
free (buf);
free (suffix);
}
static void
-write_file (FILE *out, struct grub_keyboard_layout *layout)
+write_file (FILE *out, const char *fname, struct grub_keyboard_layout *layout)
{
grub_uint32_t version;
unsigned i;
layout->keyboard_map_shift_l3[i]
= grub_cpu_to_le32(layout->keyboard_map_shift_l3[i]);
- fwrite (GRUB_KEYBOARD_LAYOUTS_FILEMAGIC, 1,
- GRUB_KEYBOARD_LAYOUTS_FILEMAGIC_SIZE, out);
- fwrite (&version, sizeof (version), 1, out);
- fwrite (layout, 1, sizeof (*layout), out);
+ if (fwrite (GRUB_KEYBOARD_LAYOUTS_FILEMAGIC, 1,
+ GRUB_KEYBOARD_LAYOUTS_FILEMAGIC_SIZE, out)
+ != GRUB_KEYBOARD_LAYOUTS_FILEMAGIC_SIZE
+ || fwrite (&version, sizeof (version), 1, out) != 1
+ || fwrite (layout, 1, sizeof (*layout), out) != sizeof (*layout))
+ {
+ if (fname)
+ grub_util_error ("cannot write to `%s': %s", fname, strerror (errno));
+ else
+ grub_util_error ("cannot write to the stdout: %s", strerror (errno));
+ }
}
static void
-write_keymaps (FILE *in, FILE *out)
+write_keymaps (FILE *in, FILE *out, const char *out_filename)
{
struct grub_keyboard_layout layout;
char line[2048];
add_special_keys (&layout);
- write_file (out, &layout);
+ write_file (out, out_filename, &layout);
}
static error_t
strerror (errno));
}
- write_keymaps (in, out);
+ write_keymaps (in, out, arguments.output);
if (in != stdin)
fclose (in);