summaryrefslogtreecommitdiff
path: root/extras/volume_id/volume_id.h
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2004-05-05 22:21:48 -0700
committerGreg KH <gregkh@suse.de>2005-04-26 21:35:17 -0700
commit599b626127f420236b8757a1e9bccc8b07081a01 (patch)
tree3213133ebcaa42997440427c33f3096f21daf61a /extras/volume_id/volume_id.h
parent3611d5820c0fc0863d15c04884b05c9e04492f45 (diff)
[PATCH] udev callout for reading filesystem labels
On Fri, Apr 30, 2004 at 03:29:54PM -0700, Greg KH wrote: > On Thu, Apr 29, 2004 at 11:04:46PM +0200, Kay Sievers wrote: > > Hi, > > here is a small udev toy, which enables udev to name partitions by > > its filesystem label or uuid's. > > > > The following udev rule: > > > > KERNEL="sd*", PROGRAM="/sbin/udev_volume_id -M%M -m%m -u", SYMLINK="%c" > > > > creates a symlink with the uuid read from the filesystem. If no label or > > uuid is found the program exits with nonzero and the rule will fail. > > > > ext2, ext3, reiserfs, xfs, jfs, vfat, msdos volume labels are supported, > > ntfs and swap partitions can be recognized. > > > > It's possible to compile with klibc and the static binary takes 13kb. > > Very nice, I was wondering who was going to use that library to make > such a tool. This is even better as we can use klibc for it. Here is a update, which supports iso9660 and udf labels. Not very useful in the udev case, but I've added it for hal, so we just catch up with the latest version.
Diffstat (limited to 'extras/volume_id/volume_id.h')
-rw-r--r--extras/volume_id/volume_id.h53
1 files changed, 30 insertions, 23 deletions
diff --git a/extras/volume_id/volume_id.h b/extras/volume_id/volume_id.h
index a0d2acda22..2f20244c7c 100644
--- a/extras/volume_id/volume_id.h
+++ b/extras/volume_id/volume_id.h
@@ -3,27 +3,27 @@
*
* Copyright (C) 2004 Kay Sievers <kay.sievers@vrfy.org>
*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 675 Mass Ave, Cambridge, MA 02139, USA.
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
*
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _VOLUME_ID_H_
#define _VOLUME_ID_H_
-#define VOLUME_ID_VERSION 001
+#define VOLUME_ID_VERSION 002
-#define VOLUME_ID_LABEL_SIZE 16
+#define VOLUME_ID_LABEL_SIZE 32
#define VOLUME_ID_UUID_SIZE 16
#define VOLUME_ID_UUID_STRING_SIZE 37
#define VOLUME_ID_PATH_MAX 255
@@ -38,20 +38,27 @@ enum filesystem_type {
JFS,
MSDOS,
VFAT,
+ UDF,
+ ISO9660,
NTFS,
SWAP
};
struct volume_id {
- char label[VOLUME_ID_LABEL_SIZE];
- char label_string[VOLUME_ID_LABEL_SIZE+1];
- unsigned char uuid[VOLUME_ID_UUID_SIZE];
- char uuid_string[VOLUME_ID_UUID_STRING_SIZE];
- enum filesystem_type fs_type;
- char *fs_name;
- int fd;
- char *buf;
- int fd_close;
+ char label_raw[VOLUME_ID_LABEL_SIZE];
+ size_t label_raw_len;
+ char label_string[VOLUME_ID_LABEL_SIZE+1];
+ unsigned char uuid[VOLUME_ID_UUID_SIZE];
+ char uuid_string[VOLUME_ID_UUID_STRING_SIZE];
+ enum filesystem_type fs_type;
+ char *fs_name;
+ int fd;
+ char *sbbuf;
+ size_t sbbuf_len;
+ char *seekbuf;
+ size_t seekbuf_off;
+ size_t seekbuf_len;
+ int fd_close;
};
/* open volume by already open file descriptor */