#include <sys/stat.h>
#include <unistd.h>
+#define STRINGS_DIR "strings"
+#define CONFIGS_DIR "configs"
+#define FUNCTIONS_DIR "functions"
+
/**
* @file usbg.c
* @todo Handle buffer overflows
struct dirent **dent;
char fpath[USBG_MAX_PATH_LENGTH];
- sprintf(fpath, "%s/%s/functions", path, g->name);
+ sprintf(fpath, "%s/%s/%s", path, g->name, FUNCTIONS_DIR);
TAILQ_INIT(&g->functions);
struct dirent **dent;
char cpath[USBG_MAX_PATH_LENGTH];
- sprintf(cpath, "%s/%s/configs", path, g->name);
+ sprintf(cpath, "%s/%s/%s", path, g->name, CONFIGS_DIR);
TAILQ_INIT(&g->configs);
static void usbg_parse_strings(char *path, struct gadget *g)
{
/* Strings - hardcoded to U.S. English only for now */
- usbg_read_string(path, g->name, "strings/0x409/serialnumber", g->str_ser);
- usbg_read_string(path, g->name, "strings/0x409/manufacturer", g->str_mnf);
- usbg_read_string(path, g->name, "strings/0x409/product", g->str_prd);
+ int lang = LANG_US_ENG;
+ char spath[USBG_MAX_PATH_LENGTH];
+
+ sprintf(spath, "%s/%s/%s/0x%x", path, g->name, STRINGS_DIR, lang);
+
+ usbg_read_string(spath, "", "serialnumber", g->str_ser);
+ usbg_read_string(spath, "", "manufacturer", g->str_mnf);
+ usbg_read_string(spath, "", "product", g->str_prd);
}
static int usbg_parse_gadgets(char *path, struct state *s)
g->parent = s;
/* UDC bound to, if any */
usbg_read_string(path, g->name, "UDC", g->udc);
- usbg_parse_configs(path, g);
+ usbg_parse_attrs(path, g);
usbg_parse_strings(path, g);
usbg_parse_functions(path, g);
usbg_parse_configs(path, g);
{
char path[USBG_MAX_PATH_LENGTH];
- sprintf(path, "%s/%s/%s/0x%x", g->path, g->name, "strings", lang);
+ sprintf(path, "%s/%s/%s/0x%x", g->path, g->name, STRINGS_DIR, lang);
mkdir(path, S_IRWXU|S_IRWXG|S_IRWXO);
{
char path[USBG_MAX_PATH_LENGTH];
- sprintf(path, "%s/%s/%s/0x%x", g->path, g->name, "strings", lang);
+ sprintf(path, "%s/%s/%s/0x%x", g->path, g->name, STRINGS_DIR, lang);
mkdir(path, S_IRWXU|S_IRWXG|S_IRWXO);
{
char path[USBG_MAX_PATH_LENGTH];
- sprintf(path, "%s/%s/%s/0x%x", g->path, g->name, "strings", lang);
+ sprintf(path, "%s/%s/%s/0x%x", g->path, g->name, STRINGS_DIR, lang);
mkdir(path, S_IRWXU|S_IRWXG|S_IRWXO);
return NULL;
}
- sprintf(fpath, "%s/%s/functions/%s", g->path, g->name, name);
+ sprintf(fpath, "%s/%s/%s/%s", g->path, g->name, FUNCTIONS_DIR, name);
f = malloc(sizeof(struct function));
if (!f) {
}
strcpy(f->name, name);
- sprintf(f->path, "%s/%s/%s", g->path, g->name, "functions");
+ sprintf(f->path, "%s/%s/%s", g->path, g->name, FUNCTIONS_DIR);
f->type = type;
ret = mkdir(fpath, S_IRWXU|S_IRWXG|S_IRWXO);
return NULL;
}
- sprintf(cpath, "%s/%s/configs/%s", g->path, g->name, name);
+ sprintf(cpath, "%s/%s/%s/%s", g->path, g->name, CONFIGS_DIR, name);
c = malloc(sizeof(struct config));
if (!c) {
TAILQ_INIT(&c->bindings);
strcpy(c->name, name);
- sprintf(c->path, "%s/%s/%s/%s", g->path, g->name, "configs", name);
+ sprintf(c->path, "%s/%s/%s", g->path, g->name, CONFIGS_DIR);
ret = mkdir(cpath, S_IRWXU|S_IRWXG|S_IRWXO);
if (ret < 0) {
{
char path[USBG_MAX_PATH_LENGTH];
- sprintf(path, "%s/%s/0x%x", c->path, "strings", lang);
+ sprintf(path, "%s/%s/%s/0x%x", c->path, c->name, STRINGS_DIR, lang);
mkdir(path, S_IRWXU|S_IRWXG|S_IRWXO);
return ret;
}
- sprintf(bpath, "%s/%s", c->path, name);
+ sprintf(bpath, "%s/%s/%s", c->path, c->name, name);
sprintf(fpath, "%s/%s", f->path, f->name);
b = malloc(sizeof(struct binding));