#include #include #include #include "common.h" /* * return partition name - uses static storage unless buf is supplied */ static char * partnamebf(char *dev, int pno, int lth, int bufsiz, char *bufp) { static char buffer[80]; char *p; int w, wp; if (!bufp) { bufp = buffer; bufsiz = sizeof(buffer); } w = strlen(dev); p = ""; if (isdigit(dev[w-1])) p = "p"; /* devfs kludge - note: fdisk partition names are not supposed to equal kernel names, so there is no reason to do this */ if (strcmp (dev + w - 4, "disc") == 0) { w -= 4; p = "part"; } wp = strlen(p); if (lth) { snprintf(bufp, bufsiz, "%*.*s%s%-2u", lth-wp-2, w, dev, p, pno); } else { snprintf(bufp, bufsiz, "%.*s%s%-2u", w, dev, p, pno); } return bufp; } char * partname(char *dev, int pno, int lth) { return partnamebf(dev, pno, lth, 0, NULL); }