aboutsummaryrefslogtreecommitdiff
path: root/ubi-utils/src/pddcustomize.c
diff options
context:
space:
mode:
Diffstat (limited to 'ubi-utils/src/pddcustomize.c')
-rw-r--r--ubi-utils/src/pddcustomize.c47
1 files changed, 29 insertions, 18 deletions
diff --git a/ubi-utils/src/pddcustomize.c b/ubi-utils/src/pddcustomize.c
index 956ce8f..515efd6 100644
--- a/ubi-utils/src/pddcustomize.c
+++ b/ubi-utils/src/pddcustomize.c
@@ -26,6 +26,7 @@
*
* 1.3 Removed argp because we want to use uClibc.
* 1.4 Minor cleanups
+ * 1.5 Migrated to new libubi
*/
#include <stdio.h>
@@ -34,6 +35,7 @@
#include <string.h>
#include <getopt.h>
#include <unistd.h>
+#include <limits.h>
#include <errno.h>
#include <mtd/ubi-header.h>
@@ -41,10 +43,13 @@
#include "bootenv.h"
#include "error.h"
#include "example_ubi.h"
-#include "libubiold.h"
+#include "libubi.h"
#include "ubimirror.h"
-#define PROGRAM_VERSION "1.4"
+#define PROGRAM_VERSION "1.5"
+
+#define DEFAULT_DEV_PATTERN "/dev/ubi%d"
+#define DEFAULT_VOL_PATTERN "/dev/ubi%d_%d"
typedef enum action_t {
ACT_NORMAL = 0,
@@ -299,17 +304,20 @@ err:
static int
ubi_read_bootenv(uint32_t devno, uint32_t id, bootenv_t env)
{
- ubi_lib_t ulib = NULL;
+ libubi_t ulib;
int rc = 0;
+ char path[PATH_MAX];
FILE* fp_in = NULL;
- rc = ubi_open(&ulib);
- if( rc ){
+ ulib = libubi_open();
+ if (ulib == NULL) {
err_msg("Cannot allocate ubi structure\n");
- return rc;
+ return -1;
}
- fp_in = ubi_vol_fopen_read(ulib, devno, id);
+ snprintf(path, PATH_MAX, DEFAULT_VOL_PATTERN, devno, id);
+
+ fp_in = fopen(path, "r");
if (fp_in == NULL) {
err_msg("Cannot open volume:%d number:%d\n", devno, id);
goto err;
@@ -322,9 +330,9 @@ ubi_read_bootenv(uint32_t devno, uint32_t id, bootenv_t env)
}
err:
- if( fp_in )
+ if (fp_in)
fclose(fp_in);
- ubi_close(&ulib);
+ libubi_close(ulib);
return rc;
}
@@ -357,25 +365,28 @@ err:
static int
ubi_write_bootenv(uint32_t devno, uint32_t id, bootenv_t env)
{
- ubi_lib_t ulib = NULL;
+ libubi_t ulib;
int rc = 0;
- FILE* fp_out;
+ char path[PATH_MAX];
+ FILE* fp_out = NULL;
size_t nbytes ;
rc = bootenv_size(env, &nbytes);
- if( rc ){
+ if (rc) {
err_msg("Cannot determine size of bootenv structure\n");
return rc;
}
- rc = ubi_open(&ulib);
- if( rc ){
+ ulib = libubi_open();
+ if (ulib == NULL) {
err_msg("Cannot allocate ubi structure\n");
return rc;
}
- fp_out = ubi_vol_fopen_update(ulib, devno, id,
- (unsigned long long)nbytes);
+
+ snprintf(path, PATH_MAX, DEFAULT_VOL_PATTERN, devno, id);
+
+ fp_out = fopen(path, "r+");
if (fp_out == NULL) {
- err_msg("Cannot open volume:%d number:%d\n", devno, id);
+ err_msg("Cannot fopen volume:%d number:%d\n", devno, id);
goto err;
}
@@ -389,7 +400,7 @@ ubi_write_bootenv(uint32_t devno, uint32_t id, bootenv_t env)
err:
if( fp_out )
fclose(fp_out);
- ubi_close(&ulib);
+ libubi_close(ulib);
return rc;
}