int main (int argc, char *argv[]) { const char *pkglibdir; grub_util_host_init (&argc, &argv); grub_util_disable_fd_syncs (); rootdir = xstrdup ("/srv/tftp"); pkglibdir = grub_util_get_pkglibdir (); subdir = grub_util_path_concat (2, GRUB_BOOT_DIR_NAME, GRUB_DIR_NAME); argp_parse (&argp, argc, argv, 0, 0, 0); base = grub_util_path_concat (2, rootdir, subdir); /* Create the GRUB directory if it is not present. */ grub_install_mkdir_p (base); grub_install_push_module ("tftp"); if (!grub_install_source_directory) { enum grub_install_plat plat; for (plat = 0; plat < GRUB_INSTALL_PLATFORM_MAX; plat++) if (targets[plat].mkimage_target) { char *platdir = grub_util_path_concat (2, pkglibdir, grub_install_get_platform_name (plat)); grub_util_info ("Looking for `%s'", platdir); if (!grub_util_is_directory (platdir)) { free (platdir); continue; } process_input_dir (platdir, plat); } } else { enum grub_install_plat plat; plat = grub_install_get_target (grub_install_source_directory); process_input_dir (grub_install_source_directory, plat); } return 0; }
static int is_dir (const char *path, const char *name) { int len1 = strlen(path); int len2 = strlen(name); int ret; char *pathname = xmalloc (len1 + 1 + len2 + 1 + 13); strcpy (pathname, path); /* Avoid UNC-path "//name" on Cygwin. */ if (len1 > 0 && pathname[len1 - 1] != '/') strcat (pathname, "/"); strcat (pathname, name); ret = grub_util_is_directory (pathname); free (pathname); return ret; }