Procházet zdrojové kódy

libdpkg: Create a new pkg_list structure and functions

A new functions to construct and free a list and prepend to a list.
Guillem Jover před 17 roky
rodič
revize
fed0b802b2
3 změnil soubory, kde provedl 105 přidání a 0 odebrání
  1. 1 0
      lib/dpkg/Makefile.am
  2. 61 0
      lib/dpkg/pkg-list.c
  3. 43 0
      lib/dpkg/pkg-list.h

+ 1 - 0
lib/dpkg/Makefile.am

@@ -41,6 +41,7 @@ libdpkg_a_SOURCES = \
 	parsedump.h \
 	path.c path.h \
 	pkg-array.c pkg-array.h \
+	pkg-list.c pkg-list.h \
 	progress.c progress.h \
 	showpkg.c \
 	string.c string.h \

+ 61 - 0
lib/dpkg/pkg-list.c

@@ -0,0 +1,61 @@
+/*
+ * dpkg - main program for package management
+ * pkg-list.c - primitives for pkg linked list handling
+ *
+ * Copyright © 2009 Guillem Jover <guillem@debian.org>
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2,
+ * or (at your option) any later version.
+ *
+ * This is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with dpkg; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+#include <compat.h>
+
+#include <stdlib.h>
+
+#include <dpkg/dpkg.h>
+#include <dpkg/dpkg-db.h>
+#include <dpkg/pkg-list.h>
+
+struct pkg_list *
+pkg_list_new(struct pkginfo *pkg, struct pkg_list *next)
+{
+	struct pkg_list *node;
+
+	node = m_malloc(sizeof(*node));
+	node->pkg = pkg;
+	node->next = next;
+
+	return node;
+}
+
+void
+pkg_list_free(struct pkg_list *head)
+{
+	while (head) {
+		struct pkg_list *node;
+
+		node = head;
+		head = head->next;
+
+		free(node);
+	}
+}
+
+void
+pkg_list_prepend(struct pkg_list **head, struct pkginfo *pkg)
+{
+	*head = pkg_list_new(pkg, *head);
+}
+

+ 43 - 0
lib/dpkg/pkg-list.h

@@ -0,0 +1,43 @@
+/*
+ * dpkg - main program for package management
+ * pkg-list.h - primitives for pkg linked list handling
+ *
+ * Copyright © 2009 Guillem Jover <guillem@debian.org>
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2,
+ * or (at your option) any later version.
+ *
+ * This is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with dpkg; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef DPKG_PKG_LIST_H
+#define DPKG_PKG_LIST_H
+
+#include <config.h>
+#include <compat.h>
+
+#include <dpkg/dpkg-db.h>
+
+DPKG_BEGIN_DECLS
+
+struct pkg_list {
+	struct pkg_list *next;
+	struct pkginfo *pkg;
+};
+
+struct pkg_list *pkg_list_new(struct pkginfo *pkg, struct pkg_list *next);
+void pkg_list_free(struct pkg_list *head);
+void pkg_list_prepend(struct pkg_list **head, struct pkginfo *pkg);
+
+DPKG_END_DECLS
+
+#endif /* DPKG_PKG_LIST_H */