PERFORCE change 166882 for review
David Forsythe
dforsyth at FreeBSD.org
Fri Jul 31 22:28:14 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=166882
Change 166882 by dforsyth at squirrel on 2009/07/31 22:27:14
Fix parse loop, dump everything.
Affected files ...
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#40 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#35 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db.c#8 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb.h#6 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb_read.c#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.c#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.h#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest_plist.c#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_util.c#15 edit
.. //depot/projects/soc2009/dforsyth_libpkg/pkg_info/main.c#26 edit
Differences ...
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#40 (text+ko) ====
@@ -15,7 +15,6 @@
#include "pkg.h"
void pkg_check_magic(struct pkg *p, const char *where);
-static int pkg_set_field(char *dest, const char *src);
static int pkg_read_pkg_element_from_db(struct pkg *p, int element);
static int pkg_write_pkg_element_to_db(struct pkg *p, int element);
static int pkg_parse_manifest(struct pkg *p);
@@ -214,6 +213,24 @@
return (p->description);
}
+const char *
+pkg_required_by(struct pkg *p)
+{
+ if (p->in_db != NULL)
+ pkg_read_pkg_element_from_db(p, PKG_ELEM_REQUIRED_BY);
+
+ return ((const char *)p->required_by);
+}
+
+const char *
+pkg_display(struct pkg *p)
+{
+ if (p->in_db != NULL)
+ pkg_read_pkg_element_from_db(p, PKG_ELEM_DISPLAY);
+
+ return ((const char *)p->display);
+}
+
/* Set the comment for this package. */
int
@@ -409,6 +426,34 @@
return ((const char *)pkg_depend_origin(pd));
}
+const char *
+pkg_mtree_file(struct pkg *p)
+{
+ pkg_parse_manifest(p);
+ return ((const char *)pkg_manifest_mtree_file(p->pm));
+}
+
+int
+pkg_extract_in_place(struct pkg *p)
+{
+ pkg_parse_manifest(p);
+ return (pkg_manifest_extract_in_place(p->pm));
+}
+
+int
+pkg_preserve(struct pkg *p)
+{
+ pkg_parse_manifest(p);
+ return (pkg_manifest_preserve(p->pm));
+}
+
+int
+pkg_complete(struct pkg *p)
+{
+ pkg_parse_manifest(p);
+ return (pkg_manifest_complete(p->pm));
+}
+
/* Wrap _write_pkg_element. */
static int
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#35 (text+ko) ====
@@ -50,6 +50,7 @@
int pkg_set_required_by(struct pkg *p, const char *required_by);
int pkg_clone(struct pkg *src, struct pkg *dest);
+int pkg_force_parse_manifest(struct pkg *p);
/* Add mtree_dirs, display, etc, etc. */
@@ -57,10 +58,10 @@
const char *const *pkg_depends(struct pkg *p);
const char *const *pkg_conflicts(struct pkg *p);
-int pkg_add_file(struct pkg *p, const char *path, const char *cwd,
+int pkg_insert_pkg_file(struct pkg *p, const char *path, const char *cwd,
const char *group, const char *md5, const char *mode,
const char *owner);
-int pkg_remove_file(struct pkg *p, const char *path);
+int pkg_delete_pkg_file(struct pkg *p, const char *path);
const char *pkg_pkg_file_cwd(struct pkg *p, const char *path);
const char *pkg_pkg_file_group(struct pkg *p, const char *path);
const char *pkg_pkg_file_md5(struct pkg *p, const char *path);
@@ -76,6 +77,14 @@
int pkg_remove_conflict(struct pkg *p, const char *name);
int pkg_conflict_get_version(struct pkg *p, const char *name);
+const char *pkg_mtree_file(struct pkg *p);
+
+int pkg_extract_in_place(struct pkg *p);
+int pkg_preserve(struct pkg *p);
+int pkg_complete(struct pkg *p);
+
+const char *pkg_required_by(struct pkg *p);
+
/* pkg_db */
struct pkg_db *pkg_db_new(void);
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db.c#8 (text+ko) ====
@@ -63,7 +63,7 @@
db->pkg_db_db_open = pkg_db_hierdb_db_open;
/* db->pkg_db_db_read_pkg_from_db = pkg_db_hierdb_read_pkg_from_db; */
db->pkg_db_db_read_pkg_element = pkg_db_hierdb_read_pkg_element;
- db->pkg_db_db_write_pkg_element = pkg_db_hierdb_write_pkg_element;
+ /* db->pkg_db_db_write_pkg_element = pkg_db_hierdb_write_pkg_element; */
/* db->pkg_db_db_close = pkg_db_hierdb_db_close; */
break;
default:
@@ -138,7 +138,6 @@
int
pkg_db_insert_pkg_entry(struct pkg_db *db, struct pkg *p)
{
- int i;
int status;
char **list;
struct pkg *entries;
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb.h#6 (text+ko) ====
@@ -17,6 +17,8 @@
int pkg_db_hierdb_read_pkg_from_db(struct pkg_db *db, struct pkg *p);
+int pkg_db_hierdb_file_exists(struct pkg_db *db, struct pkg *p, const char *filename);
+
// int pkg_db_hierdb_read_pkg_element(struct pkg_db *db, struct pkg *p, int element);
#endif
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb_read.c#2 (text+ko) ====
@@ -22,21 +22,25 @@
FILE *pkg_db_hierdb_open_file_stream_read(struct pkg_db *db, struct pkg *p,
const char *filename);
-int pkg_db_hierdb_read_comment_to_pkg(struct pkg_db *db, struct pkg *p);
+
+static char *pkg_db_hierdb_read_file_to_text(struct pkg_db *db, struct pkg *p,
+ const char *filename);
+
+static int pkg_db_hierdb_read_comment_to_pkg(struct pkg_db *db, struct pkg *p);
+
+static int pkg_db_hierdb_read_description_to_pkg(struct pkg_db *db, struct pkg *p);
-int pkg_db_hierdb_read_description_to_pkg(struct pkg_db *db, struct pkg *p);
+static int pkg_db_hierdb_read_display_to_pkg(struct pkg_db *db, struct pkg *p);
-int pkg_db_hierdb_read_display_to_pkg(struct pkg_db *db, struct pkg *p);
+static int pkg_db_hierdb_read_mtree_dirs_to_pkg(struct pkg_db *db, struct pkg *p);
-int pkg_db_hierdb_read_mtree_dirs_to_pkg(struct pkg_db *db, struct pkg *p);
+static int pkg_db_hierdb_read_required_by_to_pkg(struct pkg_db *db, struct pkg *p);
-int pkg_db_hierdb_read_pkg_manifest_to_pkg(struct pkg_db *db, struct pkg *p);
+static int pkg_db_hierdb_read_pkg_manifest_to_pkg(struct pkg_db *db, struct pkg *p);
int
pkg_db_hierdb_read_pkg_element(struct pkg_db *db, struct pkg *p, int element)
{
- FILE *file;
- char *text;
int status;
status = OK;
@@ -84,7 +88,7 @@
return (file);
}
-char *
+static char *
pkg_db_hierdb_read_file_to_text(struct pkg_db *db, struct pkg *p,
const char *filename)
{
@@ -94,7 +98,7 @@
char *path;
char *text;
struct stat sb;
-
+
status = OK;
dir = path_build(db->db_root, p->ident);
path = path_build(dir, filename);
@@ -128,13 +132,14 @@
}
text[sb.st_size] = '\0';
+
return (text);
}
/* These will not be staying this way. For now, assume that all files are where we
* want them to be, and assume a PLIST manifest. */
-int
+static int
pkg_db_hierdb_read_comment_to_pkg(struct pkg_db *db, struct pkg *p)
{
char *text;
@@ -152,7 +157,7 @@
return (OK);
}
-int
+static int
pkg_db_hierdb_read_description_to_pkg(struct pkg_db *db, struct pkg *p)
{
char *text;
@@ -170,7 +175,7 @@
return (OK);
}
-int
+static int
pkg_db_hierdb_read_display_to_pkg(struct pkg_db *db, struct pkg *p)
{
char *text;
@@ -188,7 +193,7 @@
return (OK);
}
-int
+static int
pkg_db_hierdb_read_mtree_dirs_to_pkg(struct pkg_db *db, struct pkg *p)
{
char *text;
@@ -206,7 +211,7 @@
return (OK);
}
-int
+static int
pkg_db_hierdb_read_required_by_to_pkg(struct pkg_db *db, struct pkg *p)
{
char *text;
@@ -224,9 +229,10 @@
return (OK);
}
-int
+static int
pkg_db_hierdb_read_pkg_manifest_to_pkg(struct pkg_db *db, struct pkg *p)
{
+ char *text;
FILE *manifest_stream;
int manifest_type;
int status;
@@ -239,7 +245,7 @@
/* Open a stream. */
manifest_stream = pkg_db_hierdb_open_file_stream_read(db, p, CONTENTS_FILE);
-
+ status = OK;
switch(manifest_type) {
case (PLIST):
status = pkg_manifest_parse_plist_from_stream(p->pm, manifest_stream);
@@ -247,7 +253,6 @@
default:
break;
}
-
fclose(manifest_stream);
return (status);
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.c#2 (text+ko) ====
@@ -131,6 +131,24 @@
}
int
+pkg_manifest_extract_in_place(struct pkg_manifest *pm)
+{
+ return (pm->extract_in_place);
+}
+
+int
+pkg_manifest_preserve(struct pkg_manifest *pm)
+{
+ return (pm->preserve);
+}
+
+int
+pkg_manifest_complete(struct pkg_manifest *pm)
+{
+ return (pm->complete);
+}
+
+int
pkg_manifest_set_cwd(struct pkg_manifest *pm, const char *cwd)
{
pkg_manifest_check_magic(pm, __func__);
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.h#2 (text+ko) ====
@@ -101,6 +101,12 @@
const char *pkg_manifest_mtree_file(struct pkg_manifest *pm);
+int pkg_manifest_extract_in_place(struct pkg_manifest *pm);
+
+int pkg_manifest_preserve(struct pkg_manifest *pm);
+
+int pkg_manifest_complete(struct pkg_manifest *pm);
+
int pkg_manifest_set_cwd(struct pkg_manifest *pm, const char *cwd);
int pkg_manifest_set_revision(struct pkg_manifest *pm, const char *rev);
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest_plist.c#2 (text+ko) ====
@@ -117,15 +117,17 @@
line = buff;
line[p - buff] = '\0';
status = pkg_manifest_parse_plist_parse_line(pm, line, &st);
+ /*
if (status != OK) {
pkg_manifest_reset(pm);
free(buff);
return (status);
}
+ */
buff = p + 1;
}
}
- free(buff);
+ // free(buff);
return (0);
}
@@ -202,10 +204,10 @@
int argc;
int cmd_id;
int status;
- char cmd[13];
+ char cmd[FILENAME_MAX];
char argument[LINE_MAX];
char isolate[FILENAME_MAX];
- char comment[20];
+ char comment[FILENAME_MAX];
char trail[FILENAME_MAX];
/* Last file and depend. */
@@ -213,7 +215,6 @@
struct pkg_depend *lpd;
status = OK;
-
argc = sscanf(line, "%s %[^\n]", cmd, argument);
if (argc == 1 && line[0] != PLIST_PRE_CMD) {
cmd_id = PM_FILE;
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_util.c#15 (text+ko) ====
@@ -115,7 +115,10 @@
const char *comment;
const char *name;
const char *origin;
- /* const char *mtree_file; */
+ const char *mtree_file;
+ const char *reqdby;
+ const char *display;
+ const char *desc;
const char *cwd;
const char *path;
@@ -133,8 +136,10 @@
name = pkg_name(p);
origin = pkg_origin(p);
- /* mtree_file = pkg_mtree_file(p); */
-
+ mtree_file = pkg_mtree_file(p);
+ reqdby = pkg_required_by(p);
+ display = pkg_display(p);
+ desc = pkg_description(p);
fprintf(stream, "IDENT: %s\n\n",
(ident != NULL ? ident : BAD_OR_UNKNOWN_VALUE));
@@ -145,7 +150,7 @@
(name != NULL ? name : BAD_OR_UNKNOWN_VALUE));
fprintf(stream, "\torigin: %s\n",
(origin != NULL ? origin : BAD_OR_UNKNOWN_VALUE));
- /*
+
fprintf(stream, "\tmtree file: %s\n",
(mtree_file != NULL ? mtree_file : BAD_OR_UNKNOWN_VALUE));
fprintf(stream, "\textract in place: %s\n",
@@ -154,7 +159,7 @@
(pkg_preserve(p) ? "YES" : "NO"));
fprintf(stream, "\tcomplete: %s\n",
(pkg_complete(p) ? "YES" : "NO"));
- */
+
fprintf(stream, "\tfiles:\n");
files = pkg_files(p);
@@ -197,4 +202,16 @@
name = conflict;
fprintf(stream, "\t\t%s\n", name);
}
+
+ fprintf(stream, "\nrequired by:\n");
+ fprintf(stream, "%s\n",
+ (reqdby != NULL ? reqdby : "None."));
+
+ fprintf(stream, "\ndisplay:\n");
+ fprintf(stream, "%s\n",
+ (display != NULL ? display : "None"));
+
+ fprintf(stream, "\ndescription:\n");
+ fprintf(stream, "%s\n",
+ (desc != NULL ? desc : "None"));
}
==== //depot/projects/soc2009/dforsyth_libpkg/pkg_info/main.c#26 (text+ko) ====
@@ -219,13 +219,8 @@
keys = pkg_db_all_pkg_keys(db);
- FOREACH_PKG_IN_DB(p, db, keys) {
- if (!opt_all)
- print_pkg_information(p);
- else {
- printf("pkg: "); pkg_dump(p, stdout);
- }
- }
+ FOREACH_PKG_IN_DB(p, db, keys)
+ print_pkg_information(p);
}
void
More information about the p4-projects
mailing list