diff options
-rw-r--r-- | opkg_install.c | 3 | ||||
-rw-r--r-- | pkg.c | 8 | ||||
-rw-r--r-- | pkg.h | 4 | ||||
-rw-r--r-- | pkg_parse.c | 9 |
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; @@ -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); } @@ -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': |