Remove redundant function.
[oweals/opkg-lede.git] / libopkg / opkg_install.c
index b3ece9c80de3d271f208ca0c6cbc994bec8cf3ec..b57c10e3883b8aceb2b71521848b527381d30b27 100644 (file)
@@ -69,8 +69,6 @@ static int remove_disappeared(opkg_conf_t *conf, pkg_t *pkg);
 static int install_data_files(opkg_conf_t *conf, pkg_t *pkg);
 static int resolve_conffiles(opkg_conf_t *conf, pkg_t *pkg);
 
-static int cleanup_temporary_files(opkg_conf_t *conf, pkg_t *pkg);
-
 static int user_prefers_old_conffile(const char *file, const char *backup);
 
 static char *backup_filename_alloc(const char *file_name);
@@ -86,9 +84,6 @@ int opkg_install_from_file(opkg_conf_t *conf, const char *filename)
      char *old_version, *new_version;
 
      pkg = pkg_new();
-     if (pkg == NULL) {
-         return ENOMEM;
-     }
 
      err = pkg_init_from_file(pkg, filename);
      if (err) {
@@ -206,6 +201,8 @@ opkg_error_t opkg_install_by_name(opkg_conf_t *conf, const char *pkg_name)
          } else if (cmp < 0) {
               new->dest = old->dest;
               old->state_want = SW_DEINSTALL;    /* Here probably the problem for bug 1277 */
+              free(old_version);
+              free(new_version);
          }
      }
 
@@ -683,12 +680,6 @@ int pkg_remove_installed_replacees_unwind(opkg_conf_t *conf, pkg_vec_t *replacee
      return 0;
 }
 
-int caught_sigint = 0;
-static void opkg_install_pkg_sigint_handler(int sig)
-{
-     caught_sigint = sig;
-}
-
 /* compares versions of pkg and old_pkg, returns 0 if OK to proceed with installation of pkg, 1 otherwise */
 static int opkg_install_check_downgrade(opkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg, int message)
 {        
@@ -913,6 +904,9 @@ int opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade)
      if (conf->nodeps == 0) {
          err = satisfy_dependencies_for(conf, pkg);
          if (err) { return OPKG_INSTALL_ERR_DEPENDENCIES; }
+          if (pkg->state_status == SS_UNPACKED)
+               /* Circular dependency has installed it for us. */
+               return 0;
      }
 
      replacees = pkg_vec_alloc();
@@ -921,16 +915,10 @@ int opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade)
      /* this next section we do with SIGINT blocked to prevent inconsistency between opkg database and filesystem */
      {
          sigset_t newset, oldset;
-         sighandler_t old_handler = NULL;
-         int use_signal = 0;
-         caught_sigint = 0;
-         if (use_signal) {
-              old_handler = signal(SIGINT, opkg_install_pkg_sigint_handler);
-         } else {
-              sigemptyset(&newset);
-              sigaddset(&newset, SIGINT);
-              sigprocmask(SIG_BLOCK, &newset, &oldset);
-         }
+
+         sigemptyset(&newset);
+         sigaddset(&newset, SIGINT);
+         sigprocmask(SIG_BLOCK, &newset, &oldset);
 
          opkg_state_changed++;
          pkg->state_flag |= SF_FILELIST_CHANGED;
@@ -1014,20 +1002,13 @@ int opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade)
 
          time(&pkg->installed_time);
 
-         opkg_message(conf, OPKG_INFO,
-                      "  cleanup temp files\n");
-         cleanup_temporary_files(conf, pkg);
-
          ab_pkg = pkg->parent;
          if (ab_pkg)
               ab_pkg->state_status = pkg->state_status;
 
          opkg_message(conf, OPKG_INFO, "Done.\n");
 
-         if (use_signal)
-              signal(SIGINT, old_handler);
-         else
-              sigprocmask(SIG_UNBLOCK, &newset, &oldset);
+         sigprocmask(SIG_UNBLOCK, &newset, &oldset);
           pkg_vec_free (replacees);
          return 0;
      
@@ -1047,16 +1028,10 @@ int opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade)
      UNWIND_REMOVE_INSTALLED_REPLACEES:
          pkg_remove_installed_replacees_unwind(conf, replacees);
 
-         opkg_message(conf, OPKG_INFO,
-                      "  cleanup temp files\n");
-         cleanup_temporary_files(conf, pkg);
-
          opkg_message(conf, OPKG_INFO,
                       "Failed.\n");
-         if (use_signal)
-              signal(SIGINT, old_handler);
-         else
-              sigprocmask(SIG_UNBLOCK, &newset, &oldset);
+
+         sigprocmask(SIG_UNBLOCK, &newset, &oldset);
 
           pkg_vec_free (replacees);
          return OPKG_ERR_UNKNOWN;
@@ -1623,6 +1598,10 @@ static int user_prefers_old_conffile(const char *file_name, const char *backup)
                                       "          D     : show the differences between the versions (if diff is installed)\n"
                                       "     The default action is to keep your current version.\n"
                                       "    *** %s (Y/I/N/O/D) [default=N] ? ", file_name, short_file_name);
+
+         if (response == NULL)
+                 return 1;
+
          if (strcmp(response, "y") == 0
              || strcmp(response, "i") == 0
              || strcmp(response, "yes") == 0) {
@@ -1649,57 +1628,6 @@ static int user_prefers_old_conffile(const char *file_name, const char *backup)
      }
 }
 
-/* XXX: CLEANUP: I'd like to move all of the code for
-   creating/cleaning pkg->tmp_unpack_dir directly into pkg.c. (Then,
-   it would make sense to cleanup pkg->tmp_unpack_dir directly from
-   pkg_deinit for example). */
-static int cleanup_temporary_files(opkg_conf_t *conf, pkg_t *pkg)
-{
-     DIR *tmp_dir;
-     struct dirent *dirent;
-     char *tmp_file;
-
-#ifdef OPKG_DEBUG_NO_TMP_CLEANUP
-#error
-     opkg_message(conf, OPKG_DEBUG,
-                 "%s: Not cleaning up %s since opkg compiled with OPKG_DEBUG_NO_TMP_CLEANUP\n",
-                 __FUNCTION__, pkg->tmp_unpack_dir);
-     return 0;
-#endif
-
-     if (pkg->tmp_unpack_dir && file_is_dir(pkg->tmp_unpack_dir)) {
-         tmp_dir = opendir(pkg->tmp_unpack_dir);
-         if (tmp_dir) {
-              while (1) {
-                   dirent = readdir(tmp_dir);
-                   if (dirent == NULL) {
-                        break;
-                   }
-                   sprintf_alloc(&tmp_file, "%s/%s",
-                                 pkg->tmp_unpack_dir, dirent->d_name);
-                   if (! file_is_dir(tmp_file)) {
-                        unlink(tmp_file);
-                   }
-                   free(tmp_file);
-              }
-              closedir(tmp_dir);
-              rmdir(pkg->tmp_unpack_dir);
-              free(pkg->tmp_unpack_dir);
-              pkg->tmp_unpack_dir = NULL;
-         }
-     }
-
-     opkg_message(conf, OPKG_INFO, "cleanup_temporary_files: pkg=%s local_filename=%s tmp_dir=%s\n",
-                 pkg->name, pkg->local_filename, conf->tmp_dir);
-     if (pkg->local_filename && strncmp(pkg->local_filename, conf->tmp_dir, strlen(conf->tmp_dir)) == 0) {
-         unlink(pkg->local_filename);
-         free(pkg->local_filename);
-         pkg->local_filename = NULL;
-     }
-
-     return 0;
-}
-
 static char *backup_filename_alloc(const char *file_name)
 {
      char *backup;