PERFORCE change 163212 for review
David Forsythe
dforsyth at FreeBSD.org
Sun May 31 22:05:52 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=163212
Change 163212 by dforsyth at squirrel on 2009/05/31 22:05:41
Added some action to pkg_info.
Affected files ...
.. //depot/projects/soc2009/dforsyth_libpkg/Makefile#1 add
.. //depot/projects/soc2009/dforsyth_libpkg/info/Makefile#1 add
.. //depot/projects/soc2009/dforsyth_libpkg/info/main.c#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/Makefile#1 add
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_info.c#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_info.h#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_util.c#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_util.h#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkgdb.c#2 edit
.. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkgdb.h#2 edit
Differences ...
==== //depot/projects/soc2009/dforsyth_libpkg/info/main.c#2 (text+ko) ====
@@ -4,38 +4,99 @@
#include "pkg.h"
+#define PKG_DBDIR_DEFAULT "/var/db/pkg" /* Move this. */
+
short opt_all = 0;
+short opt_glob = 0;
+short opt_show_all_info = 0;
+short opt_show_index = 0;
short opt_show_comment = 0;
+char *info_targets;
static char opts[] = "a";
static struct option lopts[] = {
{"all", no_argument, NULL, 'a'},
+ {NULL, 0, NULL, 0}, // <-- something that pkg_add in 7.2 forgot...
};
/* Mock pkg_info for testing, */
+void perform_on_db(struct pkgdb *db);
+void print_pkg_information(struct pkg *p);
+void parse_opts(int argc, char **argv);
+void usage(int exit_val);
+
int
main (int argc, char **argv)
{
- int s;
const char *db_root;
struct pkgdb *db;
if (argc == 1) {
opt_all = 1;
- opt_show_comment = 1;
}
- db_root = getenv("PKG_DBDIR");
- if (db_root == NULL) {
- printf("...");
- db_root = "/var/db/pkg";
-}
+ parse_opts(argc, argv);
+
+ db_root = getenv("PKG_DBDIR"); /* User set it */
+ if (db_root == NULL)
+ db_root = PKG_DBDIR_DEFAULT; /* Default */
+
db = pkgdb_new_hierdb(db_root);
if (db == NULL) {
- fprintf(stderr, "Could not attach to database \"%s\"\n");
+ fprintf(stderr, "Could not attach to database \"%s\"\n", db_root);
}
+
+ perform_on_db(db);
pkgdb_free_hierdb(db);
return (0);
}
+
+void
+usage(int exit_val)
+{
+ printf("If you don't know how to use me, then you shouldn't be...\n");
+ exit(exit_val);
+}
+
+void
+parse_opts(int argc, char **argv)
+{
+ /* Ehh... Worthless to write this at this point. */
+ opt_all = 1;
+}
+
+void
+perform_on_db(struct pkgdb *db)
+{
+ int count;
+ char *target;
+ struct pkg *p;
+
+ /* There will be cases where an init is useless, but since I haven't
+ * written that much yet, init regardless. */
+
+ count = pkgdb_init_hierdb(db);
+ if (count < 0)
+ exit(1);
+
+ while ((p = pkgdb_next_pkg(db)) != NULL) {
+ if (!opt_all) { /* Wont happen at this point. */
+ /* Do some matching magic that I haven't written yet. */
+ print_pkg_information(p);
+ } else {
+ print_pkg_information(p);
+ }
+ }
+}
+
+void
+print_pkg_information(struct pkg *p)
+{
+ /* Just print the basic PKGNAME COMMENT scheme right now. Other
+ * information isn't collected by the library yet. */
+ if (!opt_show_all_info)
+ printf("%s %s\n", pkg_ident(p), pkg_comment(p));
+}
+
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#2 (text+ko) ====
@@ -2,8 +2,6 @@
#include <stdlib.h>
#include <string.h>
-#include <sys/queue.h>
-
#include "pkg_util.h"
#include "pkgdb.h"
#include "pkg.h"
@@ -64,14 +62,9 @@
/* Something bad happened... I should probably let people know
* about it... */
}
-
return (p);
}
-
-
-
-/* Read in contents of comment file. */
char *
pkg_ident(struct pkg *p)
{
@@ -90,6 +83,11 @@
return (p->comment);
}
+
+/* TODO: Make an explicit note in the manual for libpkg that pkg_free
+ * should NOT be called called on pkgs that are not explicitly created by
+ * the user. */
+
void
pkg_free(struct pkg *p)
{
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#2 (text+ko) ====
@@ -1,18 +1,13 @@
#ifndef __PKG_H__
#define __PKG_H__
-#include <sys/queue.h>
-#include <dirent.h>
-
/* pkg */
struct pkg;
struct pkg *pkg_new(const char *ident);
struct pkg *pkg_set_path(struct pkg *p, const char *path);
-
-int set_pkg_contents(struct pkg *p, char *contents);
-int set_pkg_comment(struct pkg *p, char *comment);
+struct pkg *pkg_set_comment(struct pkg *p, const char *comment);
char *pkg_ident(struct pkg *p);
char *pkg_name(struct pkg *p);
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_info.c#2 (text+ko) ====
@@ -28,3 +28,8 @@
struct pkg_file *files;
};
+char *
+pkg_info_read_file_to_string(const char *path, const char *filename)
+{
+ return (NULL);
+}
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_info.h#2 (text+ko) ====
@@ -1,4 +1,11 @@
#ifndef __PKG_INFO_H__
#define __PKG_INFO_H__
+#define COMMENT_FILE "+COMMENT"
+#define CONTENTS_FILE "+CONTENTS"
+#define DESC_FILE "+DESC"
+#define DISPLAY_FILE "+DISPLAY"
+#define MTREE_DIRS_FILE "+MTREE_DIRS"
+#define REQUIRED_BY_FILE "+REQUIRED_BY"
+
#endif
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_util.c#2 (text+ko) ====
@@ -5,6 +5,8 @@
#include <sys/types.h>
#include <dirent.h>
+#include "pkg_util.h"
+
int
subdir_sel(struct dirent *ent)
{
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_util.h#2 (text+ko) ====
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkgdb.c#2 (text+ko) ====
@@ -15,6 +15,9 @@
/* Everything in here is written with the current database setup in mind.
* I'll add some stuff for flat databases later. */
+/* TODO: Move _hierdb functions into a seperate file, add callback
+ * functionality to pkgdb. */
+
/* Allocate and create a new hierdb. */
struct pkgdb *
@@ -135,10 +138,16 @@
struct pkg *
pkgdb_query_pkg(struct pkgdb *db, const char *ident)
{
- Need to add callbacks before do this.
+ Need to add callbacks before I do this.
}
*/
+struct pkg *
+pkgdb_query_pkg_hierdb(struct pkgdb *db, const char *ident)
+{
+ return (NULL);
+}
+
char *
pkgdb_pkg_path(struct pkgdb *db, struct pkg *p)
{
==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkgdb.h#2 (text+ko) ====
@@ -23,15 +23,8 @@
struct pkg *p_curr;
TAILQ_HEAD(pkg_head, pkg) p_head;
+
/* Callbacks */
- /* tuuuummmmbbbllleeewwwweeeedddddd*/
};
-#define COMMENT_FILE "+COMMENT"
-#define CONTENTS_FILE "+CONTENTS"
-#define DESC_FILE "+DESC"
-#define DISPLAY_FILE "+DISPLAY"
-#define MTREE_DIRS_FILE "+MTREE_DIRS"
-#define REQUIRED_BY_FILE "+REQUIRED_BY"
-
#endif
More information about the p4-projects
mailing list