Print this page
4846 HAL partition names don't match real partition names

*** 3,12 **** --- 3,14 ---- * fsutils.c : filesystem utilities * * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * + * Copyright 2014 Andrew Stormont. + * * Licensed under the Academic Free License version 2.1 * */ #ifdef HAVE_CONFIG_H
*** 31,56 **** #include <libhal.h> #include "fsutils.h" /* * Separates dos notation device spec into device and drive number */ boolean_t dos_to_dev(char *path, char **devpath, int *num) { ! char *p; ! if ((p = strrchr(path, ':')) == NULL) { ! return (B_FALSE); } ! if ((*num = atoi(p + 1)) == 0) { return (B_FALSE); } ! p[0] = '\0'; ! *devpath = strdup(path); ! p[0] = ':'; ! return (*devpath != NULL); } char * get_slice_name(char *devlink) { --- 33,67 ---- #include <libhal.h> #include "fsutils.h" /* * Separates dos notation device spec into device and drive number + * pN partition names are rewritten to point to p0 + * :N partition names are dropped */ boolean_t dos_to_dev(char *path, char **devpath, int *num) { ! int i; ! char *buf; ! boolean_t found = B_FALSE; ! for (i = strlen(path); i > 0; i--) { ! if (path[i] == 'p' || path[i] == ':') { ! found = B_TRUE; ! break; } ! } ! ! if (found == B_FALSE || (*num = atoi(path + i + 1)) == 0 || ! (buf = strdup(path)) == NULL) { return (B_FALSE); } ! ! (void) strcpy(buf + i, path[i] == 'p' ? "p0" : ""); ! *devpath = buf; ! return (B_TRUE); } char * get_slice_name(char *devlink) {