Adding error message for the lock file.
authorticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>
Fri, 18 Sep 2009 02:35:00 +0000 (02:35 +0000)
committerticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>
Fri, 18 Sep 2009 02:35:00 +0000 (02:35 +0000)
pkg just says "Could not obtain administrative lock" and provides no
further info when it encounters problems with the lock file. The
attached
patch makes these errors a bit easier to diagnose.

Thanks to cconroy
http://code.google.com/p/opkg/issues/detail?id=22

git-svn-id: http://opkg.googlecode.com/svn/trunk@216 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358

libopkg/opkg_conf.c

index fbbd2b2c43945924d46cd2e643618d4832a3a172..4d1306e8d49cefc1e7b7b640a4963e607ad73c24 100644 (file)
@@ -32,6 +32,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
+#include <errno.h>
 
 extern char *conf_file_dir;
 
@@ -108,6 +109,7 @@ static void opkg_conf_free_string(char **conf_str)
 int opkg_conf_init(opkg_conf_t *conf, const args_t *args)
 {
      int err;
+     int errno_copy;
      char *tmp_dir_base;
      nv_pair_list_t tmp_dest_nv_pair_list;
      char *lists_dir = NULL, *lock_file = NULL;
@@ -135,12 +137,19 @@ int opkg_conf_init(opkg_conf_t *conf, const args_t *args)
 
      conf->lock_fd = creat (lock_file, S_IRUSR | S_IWUSR | S_IRGRP);
      err = lockf (conf->lock_fd, F_TLOCK, 0);
+     errno_copy = errno;
 
      free (lock_file);
 
      if (err)
      {
-       opkg_message (conf, OPKG_ERROR, "Could not obtain administrative lock\n");
+       if(args->offline_root) {
+         opkg_message (conf, OPKG_ERROR, "Could not obtain administrative lock for offline root (ERR: %s)  at %s/%s/lock\n",
+                 strerror(errno_copy), args->offline_root, OPKG_STATE_DIR_PREFIX);
+       } else {
+         opkg_message (conf, OPKG_ERROR, "Could not obtain administrative lock (ERR: %s) at %s/lock\n",
+                 strerror(errno_copy), OPKG_STATE_DIR_PREFIX);
+       }
        return OPKG_CONF_ERR_LOCK;
      }