Changeset View
Changeset View
Standalone View
Standalone View
sys/geom/label/g_label_iso9660.c
Show All 32 Lines | |||||
#include <sys/systm.h> | #include <sys/systm.h> | ||||
#include <sys/kernel.h> | #include <sys/kernel.h> | ||||
#include <sys/malloc.h> | #include <sys/malloc.h> | ||||
#include <geom/geom.h> | #include <geom/geom.h> | ||||
#include <geom/geom_dbg.h> | #include <geom/geom_dbg.h> | ||||
#include <geom/label/g_label.h> | #include <geom/label/g_label.h> | ||||
#define G_LABEL_ISO9660_DIR "iso9660" | |||||
#define ISO9660_MAGIC "\x01" "CD001" "\x01\x00" | #define ISO9660_MAGIC "\x01" "CD001" "\x01\x00" | ||||
#define ISO9660_OFFSET 0x8000 | #define ISO9660_OFFSET 0x8000 | ||||
#define VOLUME_LEN 32 | #define VOLUME_LEN 32 | ||||
static void | static void | ||||
g_label_iso9660_taste(struct g_consumer *cp, char *label, size_t size) | g_label_iso9660_taste(struct g_consumer *cp, char *label, size_t size) | ||||
{ | { | ||||
Show All 19 Lines | g_label_iso9660_taste(struct g_consumer *cp, char *label, size_t size) | ||||
bzero(label, size); | bzero(label, size); | ||||
strlcpy(label, volume, MIN(size, VOLUME_LEN)); | strlcpy(label, volume, MIN(size, VOLUME_LEN)); | ||||
g_free(sector); | g_free(sector); | ||||
g_label_rtrim(label, size); | g_label_rtrim(label, size); | ||||
} | } | ||||
struct g_label_desc g_label_iso9660 = { | struct g_label_desc g_label_iso9660 = { | ||||
.ld_taste = g_label_iso9660_taste, | .ld_taste = g_label_iso9660_taste, | ||||
.ld_dir = G_LABEL_ISO9660_DIR, | .ld_dirprefix = "iso9660/", | ||||
.ld_enabled = 1 | .ld_enabled = 1 | ||||
}; | }; | ||||
G_LABEL_INIT(iso9660, g_label_iso9660, "Create device nodes for ISO9660 volume names"); | G_LABEL_INIT(iso9660, g_label_iso9660, "Create device nodes for ISO9660 volume names"); |