~vcs-imports/busybox/trunk

« back to all changes in this revision

Viewing changes to libbb/ubi.c

  • Committer: Eric Andersen
  • Date: 1999-11-24 09:04:33 UTC
  • Revision ID: git-v1:b99df0fd65abe3245fa2d04115326100847f865e
First draft

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* vi: set sw=4 ts=4: */
2
 
/*
3
 
 * Utility routines.
4
 
 *
5
 
 * Copyright (C) 2016 Denys Vlasenko
6
 
 *
7
 
 * Licensed under GPLv2, see file LICENSE in this source tree.
8
 
 */
9
 
//kbuild:lib-y += ubi.o
10
 
 
11
 
#include "libbb.h"
12
 
 
13
 
// from ubi-media.h
14
 
#define UBI_MAX_VOLUME_NAME 127
15
 
#define UBI_MAX_VOLUMES     128
16
 
 
17
 
unsigned FAST_FUNC ubi_devnum_from_devname(const char *str)
18
 
{
19
 
        unsigned ubi_devnum;
20
 
 
21
 
        if (sscanf(str, "/dev/ubi%u", &ubi_devnum) != 1)
22
 
                bb_error_msg_and_die("not an UBI device: '%s'", str);
23
 
        return ubi_devnum;
24
 
}
25
 
 
26
 
int FAST_FUNC ubi_get_volid_by_name(unsigned ubi_devnum, const char *vol_name)
27
 
{
28
 
        unsigned i;
29
 
 
30
 
        for (i = 0; i < UBI_MAX_VOLUMES; i++) {
31
 
                char buf[UBI_MAX_VOLUME_NAME + 1];
32
 
                char fname[sizeof("/sys/class/ubi/ubi%u_%u/name") + 2 * sizeof(int)*3];
33
 
 
34
 
                sprintf(fname, "/sys/class/ubi/ubi%u_%u/name", ubi_devnum, i);
35
 
                if (open_read_close(fname, buf, sizeof(buf)) <= 0)
36
 
                        continue;
37
 
 
38
 
                buf[UBI_MAX_VOLUME_NAME] = '\0';
39
 
                strchrnul(buf, '\n')[0] = '\0';
40
 
                if (strcmp(vol_name, buf) == 0)
41
 
                        return i;
42
 
        }
43
 
        bb_error_msg_and_die("volume '%s' not found", vol_name);
44
 
}