summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--opkg_install.c3
-rw-r--r--pkg.c8
-rw-r--r--pkg.h4
-rw-r--r--pkg_parse.c9
4 files changed, 24 insertions, 0 deletions
diff --git a/opkg_install.c b/opkg_install.c
index 242db59..b278724 100644
--- a/opkg_install.c
+++ b/opkg_install.c
@@ -413,6 +413,9 @@ int satisfy_dependencies_for(opkg_conf_t *conf, pkg_t *pkg)
&& (dep->state_status != SS_UNPACKED)) {
opkg_message(conf, OPKG_DEBUG2,"Function: %s calling opkg_install_pkg \n",__FUNCTION__);
err = opkg_install_pkg(conf, dep,0);
+ /* mark this package as having been automatically installed to
+ * satisfy a dependancy */
+ dep->auto_installed = 1;
if (err) {
pkg_vec_free(depends);
return err;
diff --git a/pkg.c b/pkg.c
index 1202845..fe9118f 100644
--- a/pkg.c
+++ b/pkg.c
@@ -558,6 +558,13 @@ char * pkg_formatted_field(pkg_t *pkg, const char *field )
temp[0]='\0';
snprintf(temp, (strlen(pkg->architecture)+17), "Architecture: %s\n", pkg->architecture);
}
+ } else if (strcasecmp(field, "Auto-Installed") == 0) {
+ /* Auto-Installed flag */
+ if (pkg->auto_installed) {
+ char * s = "Auto-Installed: yes\n";
+ temp = (char *)realloc(temp, strlen(s) + 1);
+ strcpy (temp, s);
+ }
} else {
goto UNKNOWN_FMT_FIELD;
}
@@ -1017,6 +1024,7 @@ void pkg_print_status(pkg_t * pkg, FILE * file)
pkg_print_field(pkg, file, "Architecture");
pkg_print_field(pkg, file, "Conffiles");
pkg_print_field(pkg, file, "Installed-Time");
+ pkg_print_field(pkg, file, "Auto-Installed");
fputs("\n", file);
}
diff --git a/pkg.h b/pkg.h
index 665191b..ffb969b 100644
--- a/pkg.h
+++ b/pkg.h
@@ -176,6 +176,10 @@ struct pkg
int arch_priority;
/* Adding this flag, to "force" opkg to choose a "provided_by_hand" package, if there are multiple choice */
int provided_by_hand;
+
+ /* this flag specifies whether the package was installed to satisfy another
+ * package's dependancies */
+ int auto_installed;
};
pkg_t *pkg_new(void);
diff --git a/pkg_parse.c b/pkg_parse.c
index da245cc..d654e5d 100644
--- a/pkg_parse.c
+++ b/pkg_parse.c
@@ -267,6 +267,15 @@ int pkg_parse_raw(pkg_t *pkg, char ***raw, pkg_src_t *src, pkg_dest_t *dest)
case 'A':
if(isGenericFieldType("Architecture:", *lines))
pkg->architecture = parseGenericFieldType("Architecture", *lines);
+ else if(isGenericFieldType("Auto-Installed:", *lines)) {
+ char *auto_installed_value;
+ auto_installed_value = parseGenericFieldType("Auto-Installed:", *lines);
+ if (strcmp(auto_installed_value, "yes") == 0) {
+ pkg->auto_installed = 1;
+ }
+ free(auto_installed_value);
+ pkg->architecture = parseGenericFieldType("Auto-Installed", *lines);
+ }
break;
case 'F':