/* Read the file crypto.lst for auto-loading. */ void read_crypto_list (const char *prefix) { char *filename; grub_file_t file; char *buf = NULL; if (!prefix) { grub_errno = GRUB_ERR_NONE; return; } filename = grub_xasprintf ("%s/" GRUB_TARGET_CPU "-" GRUB_PLATFORM "/crypto.lst", prefix); if (!filename) { grub_errno = GRUB_ERR_NONE; return; } file = grub_file_open (filename); grub_free (filename); if (!file) { grub_errno = GRUB_ERR_NONE; return; } /* Override previous crypto.lst. */ grub_crypto_spec_free (); for (;; grub_free (buf)) { char *p, *name; struct load_spec *cur; buf = grub_file_getline (file); if (! buf) break; name = buf; while (grub_isspace (name[0])) name++; p = grub_strchr (name, ':'); if (! p) continue; *p = '\0'; p++; while (*p == ' ' || *p == '\t') p++; cur = grub_malloc (sizeof (*cur)); if (!cur) { grub_errno = GRUB_ERR_NONE; continue; } cur->name = grub_strdup (name); if (! name) { grub_errno = GRUB_ERR_NONE; grub_free (cur); continue; } cur->modname = grub_strdup (p); if (! cur->modname) { grub_errno = GRUB_ERR_NONE; grub_free (cur); grub_free (cur->name); continue; } cur->next = crypto_specs; crypto_specs = cur; } grub_file_close (file); grub_errno = GRUB_ERR_NONE; grub_crypto_autoload_hook = grub_crypto_autoload; }
/* Read the file crypto.lst for auto-loading. */ void read_crypto_list (void) { const char *prefix; char *filename; grub_file_t file; char *buf = NULL; prefix = grub_env_get ("prefix"); if (!prefix) { grub_errno = GRUB_ERR_NONE; return; } filename = grub_xasprintf ("%s/crypto.lst", prefix); if (!filename) { grub_errno = GRUB_ERR_NONE; return; } file = grub_file_open (filename); grub_free (filename); if (!file) { grub_errno = GRUB_ERR_NONE; return; } /* Override previous crypto.lst. */ grub_crypto_spec_free (); for (;; grub_free (buf)) { char *p, *name; struct load_spec *cur; buf = grub_file_getline (file); if (! buf) break; name = buf; p = grub_strchr (name, ':'); if (! p) continue; *p = '\0'; while (*++p == ' ') ; cur = grub_malloc (sizeof (*cur)); if (!cur) { grub_errno = GRUB_ERR_NONE; continue; } cur->name = grub_strdup (name); if (! name) { grub_errno = GRUB_ERR_NONE; grub_free (cur); continue; } cur->modname = grub_strdup (p); if (! cur->modname) { grub_errno = GRUB_ERR_NONE; grub_free (cur); grub_free (cur->name); continue; } cur->next = crypto_specs; crypto_specs = cur; } grub_file_close (file); grub_errno = GRUB_ERR_NONE; grub_crypto_autoload_hook = grub_crypto_autoload; }