Loading...
--- Libc/Libc-498/gen/disklabel.c
+++ Libc/Libc-997.90.3/gen/disklabel.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 1999, 2008 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
@@ -58,8 +58,9 @@
#include <sys/time.h>
#define DKTYPENAMES
#include <sys/disklabel.h>
-#include <ufs/ufs/dinode.h>
-#include <ufs/ffs/fs.h>
+/* from ufs/ffs/fs.h */
+#define BBSIZE 8192
+#define SBSIZE 8192
#include <errno.h>
#include <fcntl.h>
@@ -75,12 +76,10 @@
static int gettype(char *, char **);
struct disklabel *
-getdiskbyname(name)
- const char *name;
+getdiskbyname(const char *name)
{
- static struct disklabel disk;
- register struct disklabel *dp = &disk;
- register struct partition *pp;
+ static struct disklabel *dp = NULL;
+ struct partition *pp;
char *buf;
char *db_array[2] = { _PATH_DISKTAB, 0 };
char *cp, *cq; /* can't be register */
@@ -91,7 +90,14 @@
if (cgetent(&buf, db_array, (char *) name) < 0)
return NULL;
- bzero((char *)&disk, sizeof(disk));
+ if (dp == NULL) {
+ dp = malloc(sizeof(struct disklabel));
+ if (dp == NULL) {
+ return NULL;
+ }
+ }
+ memset(dp, 0, sizeof(struct disklabel));
+
/*
* typename
*/