poldek: poldek/pkg.h, poldek/pkgiter.c - added pkg_req_iter_curren...

mis mis at pld-linux.org
Wed Jan 23 16:01:50 CET 2008


Author: mis                          Date: Wed Jan 23 15:01:50 2008 GMT
Module: poldek                        Tag: HEAD
---- Log message:
- added pkg_req_iter_current_req_type()

---- Files affected:
poldek/poldek:
   pkg.h (1.81 -> 1.82) , pkgiter.c (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: poldek/poldek/pkg.h
diff -u poldek/poldek/pkg.h:1.81 poldek/poldek/pkg.h:1.82
--- poldek/poldek/pkg.h:1.81	Tue Jan 22 12:40:29 2008
+++ poldek/poldek/pkg.h	Wed Jan 23 16:01:45 2008
@@ -288,8 +288,13 @@
 
 struct pkg_req_iter *pkg_req_iter_new(const struct pkg *pkg, unsigned flags);
 void pkg_req_iter_free(struct pkg_req_iter *it);
+
+/* get next requirement */
 const struct capreq *pkg_req_iter_get(struct pkg_req_iter *it);
 
+/* and its type PKG_ITER_* */
+unsigned pkg_req_iter_current_req_type(const struct pkg_req_iter *it);
+
 
 #endif
 

================================================================
Index: poldek/poldek/pkgiter.c
diff -u poldek/poldek/pkgiter.c:1.1 poldek/poldek/pkgiter.c:1.2
--- poldek/poldek/pkgiter.c:1.1	Tue Jan 22 12:40:29 2008
+++ poldek/poldek/pkgiter.c	Wed Jan 23 16:01:45 2008
@@ -101,8 +101,9 @@
 
 /* requirements iterator */
 struct pkg_req_iter {
-    const struct pkg       *pkg;
+    const struct pkg *pkg;
     unsigned         flags;
+    unsigned         current_req_type;
 
     int              nreq;
     int              nsug;
@@ -119,6 +120,7 @@
 
     if (flags == 0)
         flags = PKG_ITER_REQIN;
+    it->current_req_type = 0;
 
     it->flags = flags;
     it->req = NULL;
@@ -138,6 +140,8 @@
 {
     struct capreq *req;
     
+    it->current_req_type = 0;   /* reset type */
+    
     if (it->pkg->reqs && it->nreq < n_array_size(it->pkg->reqs)) {
         req = n_array_nth(it->pkg->reqs, it->nreq);
         it->nreq++;
@@ -147,6 +151,12 @@
 
         else if ((it->flags & PKG_ITER_REQUN) == 0 && capreq_is_prereq_un(req))
             return pkg_req_iter_get(it);
+
+        /* set type of returned (current) req */
+        if (capreq_is_prereq_un(req))
+            it->current_req_type = PKG_ITER_REQUN;
+        else
+            it->current_req_type = PKG_ITER_REQIN;
         
         return req;
     }
@@ -154,6 +164,7 @@
     if ((it->flags & PKG_ITER_REQSUG)) {
         if (it->pkg->sugs && it->nsug < n_array_size(it->pkg->sugs)) {
             req = n_array_nth(it->pkg->sugs, it->nsug);
+            it->current_req_type = PKG_ITER_REQSUG;
             it->nsug++;
 
             return req;
@@ -188,9 +199,16 @@
         it->ndir++;
         it->req = capreq_new(NULL, tmp, 0, NULL, NULL, 0,
                              CAPREQ_BASTARD | CAPREQ_ISDIR);
+        it->current_req_type = PKG_ITER_REQIN;/* autodirdeps are always REQIN */
         return it->req;
     }
     
     return NULL;
 }
 
+unsigned pkg_req_iter_current_req_type(const struct pkg_req_iter *it)
+{
+    n_assert(it->current_req_type > 0);
+    return it->current_req_type;
+}
+
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/pkg.h?r1=1.81&r2=1.82&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/pkgiter.c?r1=1.1&r2=1.2&f=u



More information about the pld-cvs-commit mailing list