static struct ofdisk_hash_ent * ofdisk_hash_add_real (char *devpath) { struct ofdisk_hash_ent *p; struct ofdisk_hash_ent **head = &ofdisk_hash[ofdisk_hash_fn(devpath)]; const char *iptr; char *optr; p = grub_zalloc (sizeof (*p)); if (!p) return NULL; p->devpath = devpath; p->grub_devpath = grub_malloc (sizeof ("ieee1275/") + 2 * grub_strlen (p->devpath)); if (!p->grub_devpath) { grub_free (p); return NULL; } if (! grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_PARTITION_0)) { p->open_path = grub_malloc (grub_strlen (p->devpath) + 3); if (!p->open_path) { grub_free (p->grub_devpath); grub_free (p); return NULL; } optr = grub_stpcpy (p->open_path, p->devpath); *optr++ = ':'; *optr++ = '0'; *optr = '\0'; } else p->open_path = p->devpath; optr = grub_stpcpy (p->grub_devpath, "ieee1275/"); for (iptr = p->devpath; *iptr; ) { if (*iptr == ',') *optr++ = '\\'; *optr++ = *iptr++; } *optr = 0; p->next = *head; *head = p; return p; }
static struct ofdisk_hash_ent * ofdisk_hash_find (const char *devpath) { struct ofdisk_hash_ent *p = ofdisk_hash[ofdisk_hash_fn(devpath)]; while (p) { if (!grub_strcmp (p->devpath, devpath)) break; p = p->next; } return p; }
static struct ofdisk_hash_ent * ofdisk_hash_add (char *devpath) { struct ofdisk_hash_ent **head = &ofdisk_hash[ofdisk_hash_fn(devpath)]; struct ofdisk_hash_ent *p = grub_malloc(sizeof (*p)); if (p) { p->devpath = devpath; p->next = *head; *head = p; } return p; }
static struct ofdisk_hash_ent * ofdisk_hash_add_real (char *devpath) { struct ofdisk_hash_ent *p; struct ofdisk_hash_ent **head = &ofdisk_hash[ofdisk_hash_fn(devpath)]; p = grub_malloc(sizeof (*p)); if (!p) return NULL; p->devpath = devpath; p->next = *head; p->shortest = 0; *head = p; return p; }
static struct ofdisk_hash_ent * ofdisk_hash_add (char *devpath) { struct ofdisk_hash_ent **head = &ofdisk_hash[ofdisk_hash_fn(devpath)]; struct ofdisk_hash_ent *p = grub_malloc(sizeof (*p)); if (p) { p->devpath = grub_strdup (devpath); p->next = *head; p->refs = 0; p->dev_ihandle = 0; *head = p; } return p; }