[Frugalware-git] pacman-g2: libpacman: Rename _pacman_stringlist_append to f_stringlist_append.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=90e8547ec16cf7c03eadedebebbecb5eeaa652d4

commit 90e8547ec16cf7c03eadedebebbecb5eeaa652d4
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 08:54:37 2013 +0100

libpacman: Rename _pacman_stringlist_append to f_stringlist_append.

diff --git a/lib/libpacman/util/stringlist.c b/lib/libpacman/util/stringlist.c
index f8e11e0..bd1b128 100644
--- a/lib/libpacman/util/stringlist.c
+++ b/lib/libpacman/util/stringlist.c
@@ -74,7 +74,7 @@ FStringList *_pacman_list_strdup(FStringList *list)
return(newlist);
}

-FStringList *_pacman_stringlist_append(FStringList *list, const char *s)
+FStringList *f_stringlist_append(FStringList *list, const char *s)
{
return _pacman_list_add(list, strdup(s));
}
diff --git a/lib/libpacman/util/stringlist.h b/lib/libpacman/util/stringlist.h
index ba7980f..bb5d8c3 100644
--- a/lib/libpacman/util/stringlist.h
+++ b/lib/libpacman/util/stringlist.h
@@ -26,11 +26,13 @@
typedef struct __pmlist_t FStringList;
typedef struct __pmlist_t FStringListItem;

+#define _pacman_stringlist_append f_stringlist_append
+
int _pacman_list_is_strin(const char *needle, FStringList *haystack);
FStringList *_pacman_list_remove_dupes(FStringList *list);
FStringList *_pacman_list_strdup(FStringList *list);

-FStringList *_pacman_stringlist_append(FStringList *list, const char *s);
+FStringList *f_stringlist_append(FStringList *list, const char *s);
FStringList *f_stringlist_append_stringlist(FStringList *dest, const 
FStringList *src);

#endif /* _PACMAN_STRINGLIST_H */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Use FStringList type in package.h.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=00c3ad81b2238e6a3cf435ba722400e228c1a781

commit 00c3ad81b2238e6a3cf435ba722400e228c1a781
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 08:52:23 2013 +0100

libpacman: Use FStringList type in package.h.

diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index 49045fe..3edbc5e 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -67,18 +67,18 @@ struct __pmpkg_t {
unsigned char stick;
time_t date;
unsigned char reason;
-   pmlist_t *desc_localized;
-   pmlist_t *license;
-   pmlist_t *replaces;
-   pmlist_t *groups;
-   pmlist_t *files;
-   pmlist_t *backup;
-   pmlist_t *depends;
-   pmlist_t *removes;
-   pmlist_t *requiredby;
-   pmlist_t *conflicts;
-   pmlist_t *provides;
-   pmlist_t *triggers;
+   FStringList *desc_localized;
+   FStringList *license;
+   FStringList *replaces;
+   FStringList *groups;
+   FStringList *files;
+   FStringList *backup;
+   FStringList *depends;
+   FStringList *removes;
+   FStringList *requiredby;
+   FStringList *conflicts;
+   FStringList *provides;
+   FStringList *triggers;
/* internal */
unsigned char origin;
void *data;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Use FStringList type in __pmtrans_t.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=cb9d2c6643584e0712b234bd80afcf0efa30d3af

commit cb9d2c6643584e0712b234bd80afcf0efa30d3af
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 08:43:45 2013 +0100

libpacman: Use FStringList type in __pmtrans_t.

diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h
index bda2b87..ffd770c 100644
--- a/lib/libpacman/trans.h
+++ b/lib/libpacman/trans.h
@@ -28,6 +28,8 @@ typedef struct __pmtrans_t pmtrans_t;

#include handle.h

+#include util/stringlist.h
+
enum {
STATE_IDLE = 0,
STATE_INITIALIZED,
@@ -58,10 +60,10 @@ struct __pmtrans_t {
pmtranstype_t type;
unsigned int flags;
unsigned char state;
-   pmlist_t *targets; /* pmlist_t of (char *) */
+   FStringList *targets;
pmlist_t *packages;/* pmlist_t of (pmpkg_t *) or (pmsyncpkg_t *) */
-   pmlist_t *skiplist;/* pmlist_t of (char *) */
-   pmlist_t *triggers;/* pmlist_t of (char *) */
+   FStringList *skiplist;
+   FStringList *triggers;
pmtrans_cbs_t cbs;
};
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Simplify FList API.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b74d9068a0714b83e6d5be16495492be0c9c0d1b

commit b74d9068a0714b83e6d5be16495492be0c9c0d1b
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 08:32:08 2013 +0100

libpacman: Simplify FList API.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index 226d5fd..d1f29ad 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -30,19 +30,7 @@
#include fstdlib.h
#include util.h

-void f_listitem_delete(FListItem *item, FListItemVisitorFunc visitor_fn, void 
*visitor_data)
-{
-   FVisitor visitor = {
-   .fn = (FVisitorFunc)visitor_fn,
-   .data = visitor_data,
-   };
-
-   ASSERT(item != NULL, return);
-
-   f_listitem_delete_visit(item, visitor);
-}
-
-void f_listitem_delete_visit(FListItem *item, FVisitor *visitor)
+void f_listitem_delete(FListItem *item, FVisitor *visitor)
{
ASSERT(item != NULL, return);

@@ -267,38 +255,26 @@ FPtrList *f_ptrlist_new(void)
return (FPtrList *)item;
}

-void f_ptrlistitem_delete(FListItem *item, FVisitorFunc visitor_fn, void 
*visitor_data)
-{
-   FVisitor visitor = {
-   .fn = visitor_fn,
-   .data = visitor_data,
-   };
-
-   ASSERT(item != NULL, return);
-
-   f_ptrlistitem_delete_visit(item, visitor);
-}
-
-void f_ptrlistitem_delete_visit(FListItem *item, FVisitor *visitor)
+void f_ptrlistitem_delete(FListItem *item, FVisitor *visitor)
{
ASSERT(item != NULL, return);

-   f_listitem_delete_visit(item, visitor);
+   f_listitem_delete(item, visitor);
}

-void f_ptrlist_free(FPtrList *list, FVisitorFunc visitor, void *visitor_data)
+void f_ptrlist_free(FPtrList *list, FVisitor *visitor)
{
-   f_ptrlist_clear(list, visitor, visitor_data);
+   f_ptrlist_clear(list, visitor);
}

-void f_ptrlist_clear(FPtrList *list, FVisitorFunc visitor, void *visitor_data)
+void f_ptrlist_clear(FPtrList *list, FVisitor *visitor)
{
FPtrList *next;

while(list != NULL) {
next = list-next;
if(visitor != NULL) {
-   visitor(list-data, visitor_data);
+   f_visit(list-data, visitor);
}
free(list);
list = next;
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 7dc0112..32289ee 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -39,7 +39,7 @@ struct __pmlist_t {
struct __pmlist_t *last; /* Quick access to last item in list */
};

-#define _FREELIST(p, f) do { if(p) { f_ptrlist_free(p, (FVisitorFunc)f, NULL); 
p = NULL; } } while(0)
+#define _FREELIST(p, f) do { if(p) { FVisitor visitor = { .fn = 
(FVisitorFunc)f, .data = NULL, }; f_ptrlist_free(p, visitor); p = NULL; } } 
while(0)
#define FREELIST(p) _FREELIST(p, free)
#define FREELISTPTR(p) _FREELIST(p, NULL)

@@ -51,8 +51,7 @@ typedef int (*_pacman_fn_cmp)(const void *, const void *);
#define _pacman_list_count f_ptrlist_count
#define _pacman_list_empty f_ptrlist_empty

-void f_listitem_delete(FListItem *item, FListItemVisitorFunc visitor_fn, void 
*visitor_data);
-void f_listitem_delete_visit(FListItem *item, FVisitor *visitor);
+void f_listitem_delete(FListItem *item, FVisitor *visitor);

int f_list_contains(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data);
int f_list_count(const FList *list);
@@ -70,13 +69,12 @@ typedef struct __pmlist_t FPtrList;
typedef struct __pmlist_t FPtrListItem;

FPtrListItem *f_ptrlistitem_new(void *ptr);
-void f_ptrlistitem_delete(FListItem *item, FVisitorFunc visitor_fn, void 
*visitor_data);
-void f_ptrlistitem_delete_visit(FListItem *item, FVisitor *visitor);
+void f_ptrlistitem_delete(FListItem *item, FVisitor *visitor);

FPtrList *f_ptrlist_new(void);
-void f_ptrlist_free(FPtrList *list, FVisitorFunc visitor, void *visitor_data);
+void f_ptrlist_free(FPtrList *list, FVisitor *visitor);

-void f_ptrlist_clear(FPtrList *list, FVisitorFunc visitor, void *visitor_data);
+void f_ptrlist_clear(FPtrList *list, FVisitor *visitor);
#define f_ptrlist_count f_list_count
#define f_ptrlist_empty f_list_empty
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: git: Modify .gitignore rules after cmake/libcurl merge.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=5ef633c441fc776b6e101a2e93b1bdf15bcf1a39

commit 5ef633c441fc776b6e101a2e93b1bdf15bcf1a39
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 09:38:27 2013 +0100

git: Modify .gitignore rules after cmake/libcurl merge.

diff --git a/.gitignore b/.gitignore
index 4d7743b..23b5b6f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,33 +1,20 @@
+*.cmake
*.o
*.gmo
-*.po~
*.po
*.pot
*.pyc
*.lo
*.la
-.deps
-.libs
*.conf
*.tar.gz
*.user
-config.*
-Makefile.in
+CMake*
Makefile
-stamp-*
-missing
-aclocal.m4
-autom4te.cache
-configure
-depcomp
-install-sh
-mkinstalldirs
-LINGUAS
-POTFILES
-libtool
-ltmain.sh
-m4
+config.h
build
+lib*.so*
+root
.project
.cproject
*~
diff --git a/src/pacman-g2/.gitignore b/src/pacman-g2/.gitignore
index e3eb8e6..a67af07 100644
--- a/src/pacman-g2/.gitignore
+++ b/src/pacman-g2/.gitignore
@@ -1,2 +1,3 @@
+pacman
pacman-g2
pacman-g2.static
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: bindings: Add missing include dirs.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9e948ab7563383128fadd9d5d47671fdffec3c54

commit 9e948ab7563383128fadd9d5d47671fdffec3c54
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 09:56:18 2013 +0100

bindings: Add missing include dirs.

diff --git a/bindings/csharp/CMakeLists.txt b/bindings/csharp/CMakeLists.txt
index c180b05..fcfde9d 100644
--- a/bindings/csharp/CMakeLists.txt
+++ b/bindings/csharp/CMakeLists.txt
@@ -1,3 +1,4 @@
+include_directories (${PACMAN-G2_SOURCE_DIR}/lib/libpacman/)
SWIG_ADD_MODULE(pacman_csharp csharp ../pacman.i)
SET_SOURCE_FILES_PROPERTIES(pacman.i PROPERTIES SWIG_FLAGS -includeall)
SWIG_LINK_LIBRARIES(pacman_csharp pacman)
diff --git a/bindings/perl/CMakeLists.txt b/bindings/perl/CMakeLists.txt
index 84b9deb..331c251 100644
--- a/bindings/perl/CMakeLists.txt
+++ b/bindings/perl/CMakeLists.txt
@@ -1,3 +1,4 @@
+include_directories (${PACMAN-G2_SOURCE_DIR}/lib/libpacman/)
SWIG_ADD_MODULE(pacman_perl perl ../pacman.i)
SET_SOURCE_FILES_PROPERTIES(pacman.i PROPERTIES SWIG_FLAGS -includeall)
include_directories(${PERL_INCLUDE_PATH})
diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt
index f6dd210..66ab3d1 100644
--- a/bindings/python/CMakeLists.txt
+++ b/bindings/python/CMakeLists.txt
@@ -1,3 +1,4 @@
+include_directories (${PACMAN-G2_SOURCE_DIR}/lib/libpacman/)
SWIG_ADD_MODULE(pacman_python python ../pacman.i)
SET_SOURCE_FILES_PROPERTIES(pacman.i PROPERTIES SWIG_FLAGS -includeall)
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: gitignore: Add *.pc.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e34368eac16716342a3a1a385a2791f5a30b5c3e

commit e34368eac16716342a3a1a385a2791f5a30b5c3e
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 09:59:33 2013 +0100

gitignore: Add *.pc.

diff --git a/.gitignore b/.gitignore
index 23b5b6f..1763512 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
*.cmake
*.o
*.gmo
+*.pc
*.po
*.pot
*.pyc
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: cmake: Verify JNI presence before enabling Java Binding.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c99e18f150ae3e8546df21ffb2b573aa5035cc17

commit c99e18f150ae3e8546df21ffb2b573aa5035cc17
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 10:01:30 2013 +0100

cmake: Verify JNI presence before enabling Java Binding.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b217fd5..c93c1ba 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -49,11 +49,11 @@ IF(SWIG_FOUND)
ENDIF(MONO_FOUND)

FIND_PACKAGE(Java)
-  IF(JAVA_FOUND)
-find_package(JNI REQUIRED)
+  FIND_PACKAGE(JNI)
+  IF(JAVA_FOUND AND JNI_FOUND)
SET(HAS_JAVA TRUE CACHE BOOL Java bindings)
ADD_SUBDIRECTORY(bindings/java)
-  ENDIF(JAVA_FOUND)
+  ENDIF(JAVA_FOUND AND JNI_FOUND)

FIND_PACKAGE(Perl)
IF(PERL_FOUND)
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: pacman-g2: Little include style fix.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=151279638a77103304a62f5bd39416e91d734002

commit 151279638a77103304a62f5bd39416e91d734002
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 10:08:01 2013 +0100

pacman-g2: Little include style fix.

diff --git a/src/pacman-g2/add.c b/src/pacman-g2/add.c
index 25cc280..63058d6 100644
--- a/src/pacman-g2/add.c
+++ b/src/pacman-g2/add.c
@@ -19,12 +19,15 @@
*  USA.
*/

+#include config.h
+
#include stdlib.h
#include stdio.h
#include string.h
#include libintl.h

#include pacman.h
+
/* pacman-g2 */
#include log.h
#include list.h
diff --git a/src/pacman-g2/download.h b/src/pacman-g2/download.h
index d17b4b9..49b3242 100644
--- a/src/pacman-g2/download.h
+++ b/src/pacman-g2/download.h
@@ -20,6 +20,7 @@
*/
#ifndef _PM_DOWNLOAD_H
#define _PM_DOWNLOAD_H
+
#include server.h

#define DLFNM_PROGRESS_LEN 22
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: cmake: Fix reorder LIBPACMAN_SOURCES.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=11832c616f257f5c1e5a46a8f6a13498bdf7c747

commit 11832c616f257f5c1e5a46a8f6a13498bdf7c747
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 13:05:02 2013 +0100

cmake: Fix reorder LIBPACMAN_SOURCES.

diff --git a/lib/libpacman/CMakeLists.txt b/lib/libpacman/CMakeLists.txt
index 56bef8d..ed213df 100644
--- a/lib/libpacman/CMakeLists.txt
+++ b/lib/libpacman/CMakeLists.txt
@@ -5,19 +5,20 @@ SET(includedir \${prefix}/include)
CONFIGURE_FILE(pacman.pc.in pacman.pc @ONLY)

set(LIBPACMAN_SOURCES
+   db/fakedb.c
+   db/localdb.c
+   db/localdb_files.c
+   db/syncdb.c
hash/md5.c
hash/md5driver.c
hash/sha1.c
-   util/time.c
+   io/archive.c
+   io/ftp.c
+   package/pkginfo.c
util/list.c
util/log.c
util/stringlist.c
-   io/ftp.c
-   io/archive.c
-   db/syncdb.c
-   db/localdb_files.c
-   db/fakedb.c
-   package/pkginfo.c
+   util/time.c
add.c
be_files.c
cache.c
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Rename curlProgress to _pacman_curl_progresscb and make it static.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9b5c6819ad85294c0be03d45e7aa5340cf11ab38

commit 9b5c6819ad85294c0be03d45e7aa5340cf11ab38
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 10:12:23 2013 +0100

libpacman: Rename curlProgress to _pacman_curl_progresscb and make it static.

diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index 5126cc8..c83cac6 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -128,7 +128,8 @@ void _pacman_server_free(void *data)
/*
* Progress callback used by libcurl, we then pass our own progress function
*/
-int curlProgress(void *clientp, double dltotal, double dlnow, double ultotal, 
double ulnow) {
+static
+int _pacman_curl_progresscb(void *clientp, double dltotal, double dlnow, 
double ultotal, double ulnow) {
if(dltotal  0  dlnow  0) {
pmdownloadstate_t *downloadstate = clientp;
downloadstate-dst_tell = downloadstate-dst_resume + dlnow;
@@ -363,7 +364,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
_pacman_log(PM_LOG_DEBUG, _(error passing our debug function pointer to 
progress callback\n));
continue;
}
-retc = 
curl_easy_setopt(curlHandle,CURLOPT_PROGRESSFUNCTION, curlProgress);
+retc = curl_easy_setopt(curlHandle, 
CURLOPT_PROGRESSFUNCTION, _pacman_curl_progresscb);
if(retc != CURLE_OK) {
_pacman_log(PM_LOG_DEBUG, _(error setting progress bar\n));
continue;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add f_list_find.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=5954095afb6b0f5d55c9b2d5436b619fdff139c1

commit 5954095afb6b0f5d55c9b2d5436b619fdff139c1
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 13:08:26 2013 +0100

libpacman: Add f_list_find.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index d1f29ad..b870537 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -40,12 +40,7 @@ void f_listitem_delete(FListItem *item, FVisitor *visitor)

int f_list_contains(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data)
{
-   for(; list != NULL; list = list-next) {
-   if(comparator(list, comparator_data) == 0) {
-   return 1;
-   }
-   }
-   return 0;
+   return f_list_find(list, comparator, comparator_data) != NULL;
}

int f_list_count(const FList *list)
@@ -78,6 +73,16 @@ int _pacman_list_is_in(void *needle, const pmlist_t 
*haystack)
return f_list_contains(haystack, _pacman_ptrlistitem_ptrcmp, needle);
}

+FListItem *f_list_find(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data)
+{
+   for(; list != NULL; list = list-next) {
+   if(comparator(list, comparator_data) == 0) {
+   break;
+   }
+   }
+   return (FListItem *)list;
+}
+
pmlist_t *_pacman_list_add(pmlist_t *list, void *data)
{
pmlist_t *ptr, *lp;
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 32289ee..5382179 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -56,6 +56,7 @@ void f_listitem_delete(FListItem *item, FVisitor *visitor);
int f_list_contains(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data);
int f_list_count(const FList *list);
int f_list_empty(const FList *list);
+FListItem *f_list_find(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data);
int _pacman_list_is_in(void *needle, const pmlist_t *haystack);
void f_list_foreach(const FList *list, FListItemVisitorFunc visitor, void 
*visitor_data);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add f_ptrlist_contains and f_ptrlist_contains_ptr.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=5f4d8215a691311c9bd94e40fce3fba089276780

commit 5f4d8215a691311c9bd94e40fce3fba089276780
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 13:44:51 2013 +0100

libpacman: Add f_ptrlist_contains and f_ptrlist_contains_ptr.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index 9b69048..fc77759 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -285,4 +285,9 @@ void f_ptrlist_clear(FPtrList *list, FVisitor *visitor)
}
}

+int f_ptrlist_contains_ptr(const FPtrList *list, const void *ptr)
+{
+   return f_ptrlist_contains(list, f_ptrlistitem_ptrcmp, ptr);
+}
+
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 78c9ec4..e853a60 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -78,6 +78,8 @@ FPtrList *f_ptrlist_new(void);
void f_ptrlist_free(FPtrList *list, FVisitor *visitor);

void f_ptrlist_clear(FPtrList *list, FVisitor *visitor);
+#define f_ptrlist_contains f_list_contains
+int f_ptrlist_contains_ptr(const FPtrList *list, const void *ptr);
#define f_ptrlist_count f_list_count
#define f_ptrlist_empty f_list_empty
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make f_ptrlistitem_ptrcmp not static.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=452291c875080a4cc076e45aeacfbfc19fa81987

commit 452291c875080a4cc076e45aeacfbfc19fa81987
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 13:40:40 2013 +0100

libpacman: Make f_ptrlistitem_ptrcmp not static.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index b870537..9b69048 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -63,14 +63,9 @@ void f_list_foreach(const FList *list, FListItemVisitorFunc 
visitor, void *visit
}
}

-static
-int _pacman_ptrlistitem_ptrcmp(const FListItem *item, const void *ptr) {
-   return f_ptrcmp(item-data, ptr);
-}
-
int _pacman_list_is_in(void *needle, const pmlist_t *haystack)
{
-   return f_list_contains(haystack, _pacman_ptrlistitem_ptrcmp, needle);
+   return f_list_contains(haystack, f_ptrlistitem_ptrcmp, needle);
}

FListItem *f_list_find(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data)
@@ -267,6 +262,10 @@ void f_ptrlistitem_delete(FListItem *item, FVisitor 
*visitor)
f_listitem_delete(item, visitor);
}

+int f_ptrlistitem_ptrcmp(const FListItem *item, const void *ptr) {
+   return f_ptrcmp(item-data, ptr);
+}
+
void f_ptrlist_free(FPtrList *list, FVisitor *visitor)
{
f_ptrlist_clear(list, visitor);
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 5382179..78c9ec4 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -72,6 +72,8 @@ typedef struct __pmlist_t FPtrListItem;
FPtrListItem *f_ptrlistitem_new(void *ptr);
void f_ptrlistitem_delete(FListItem *item, FVisitor *visitor);

+int f_ptrlistitem_ptrcmp(const FListItem *item, const void *ptr);
+
FPtrList *f_ptrlist_new(void);
void f_ptrlist_free(FPtrList *list, FVisitor *visitor);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Replace _pacman_list_is_in with f_ptrlist_contains_ptr.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=4f3b20cb620b523450582e012d1eb34ec743c073

commit 4f3b20cb620b523450582e012d1eb34ec743c073
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 13:49:12 2013 +0100

libpacman: Replace _pacman_list_is_in with f_ptrlist_contains_ptr.

diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index c6212af..5fa9dec 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -326,7 +326,7 @@ int pacman_db_update(int force, pmdb_t *db)
if(_pacman_handle_lock(handle) != 0) {
return -1;
}
-   if(!_pacman_list_is_in(db, handle-dbs_sync)) {
+   if(!f_ptrlist_contains_ptr(handle-dbs_sync, db)) {
RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
}

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index fc77759..adfb59b 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -63,11 +63,6 @@ void f_list_foreach(const FList *list, FListItemVisitorFunc 
visitor, void *visit
}
}

-int _pacman_list_is_in(void *needle, const pmlist_t *haystack)
-{
-   return f_list_contains(haystack, f_ptrlistitem_ptrcmp, needle);
-}
-
FListItem *f_list_find(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data)
{
for(; list != NULL; list = list-next) {
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index e853a60..a3ca4ef 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -57,7 +57,6 @@ int f_list_contains(const FList *list, 
FListItemComparatorFunc comparator, const
int f_list_count(const FList *list);
int f_list_empty(const FList *list);
FListItem *f_list_find(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data);
-int _pacman_list_is_in(void *needle, const pmlist_t *haystack);
void f_list_foreach(const FList *list, FListItemVisitorFunc visitor, void 
*visitor_data);

pmlist_t *_pacman_list_add(pmlist_t *list, void *data);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove dummy return statement.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b921bc7c5f34c9f69b9f19d539a641f63d757063

commit b921bc7c5f34c9f69b9f19d539a641f63d757063
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 15:22:00 2013 +0100

libpacman: Remove dummy return statement.

diff --git a/lib/libpacman/group.c b/lib/libpacman/group.c
index 236434f..7045bb5 100644
--- a/lib/libpacman/group.c
+++ b/lib/libpacman/group.c
@@ -54,8 +54,6 @@ void _pacman_grp_free(void *data)

FREELIST(grp-packages);
free(grp);
-
-   return;
}

/* Helper function for sorting groups
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Use _pacman_db_get_pkgcache instead of inlined code in _pacman_db_load_grpcache.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=eaa99e09c3f3062ebb6fc7943ef6e62135a8cdb8

commit eaa99e09c3f3062ebb6fc7943ef6e62135a8cdb8
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 15:32:16 2013 +0100

libpacman: Use _pacman_db_get_pkgcache instead of inlined code in 
_pacman_db_load_grpcache.

diff --git a/lib/libpacman/cache.c b/lib/libpacman/cache.c
index 5b044f1..55cf3e2 100644
--- a/lib/libpacman/cache.c
+++ b/lib/libpacman/cache.c
@@ -93,7 +93,7 @@ pmlist_t *_pacman_db_get_pkgcache(pmdb_t *db)
{
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL));

-   if(db-pkgcache == NULL) {
+   if(f_ptrlist_empty(db-pkgcache)) {
_pacman_db_load_pkgcache(db);
}

@@ -185,13 +185,11 @@ int _pacman_db_load_grpcache(pmdb_t *db)

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));

-   if(_pacman_list_empty(db-pkgcache)) {
-   _pacman_db_load_pkgcache(db);
-   }
+   lp = _pacman_db_get_pkgcache(db);

_pacman_log(PM_LOG_DEBUG, _(loading group cache for repository '%s'), 
db-treename);

-   for(lp = db-pkgcache; lp; lp = lp-next) {
+   for(; lp; lp = lp-next) {
pmlist_t *i;
pmpkg_t *pkg = lp-data;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Replace find_pkginsync with _pacman_trans_find.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=86050809b83a07b03937304dccc98b70cbe92aec

commit 86050809b83a07b03937304dccc98b70cbe92aec
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 16:11:07 2013 +0100

libpacman: Replace find_pkginsync with _pacman_trans_find.

diff --git a/lib/libpacman/sync.c b/lib/libpacman/sync.c
index d3a460c..0a62f38 100644
--- a/lib/libpacman/sync.c
+++ b/lib/libpacman/sync.c
@@ -91,24 +91,6 @@ void _pacman_sync_free(void *data)
free(ps);
}

-/* Test for existence of a package in a pmlist_t* of pmsyncpkg_t*
- * If found, return a pointer to the respective pmsyncpkg_t*
- */
-pmsyncpkg_t *find_pkginsync(char *needle, pmlist_t *haystack)
-{
-   pmlist_t *i;
-   pmsyncpkg_t *ps;
-
-   for(i = haystack; i != NULL ; i = i-next) {
-   ps = i-data;
-   if(ps  !strcmp(ps-pkg_name, needle)) {
-   return(ps);
-   }
-   }
-
-   return(NULL);
-}
-
int _pacman_sync_addtarget(pmtrans_t *trans, const char *name)
{
char targline[PKG_FULLNAME_LEN];
@@ -195,7 +177,7 @@ int _pacman_sync_addtarget(pmtrans_t *trans, const char 
*name)
}

/* add the package to the transaction */
-   if(!find_pkginsync(spkg-name, trans-packages)) {
+   if(!_pacman_trans_find(trans, spkg-name)) {
pmpkg_t *dummy = NULL;
if(pkg_local) {
dummy = _pacman_pkg_new(pkg_local-name, pkg_local-version);
@@ -288,7 +270,7 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t **data)
for(i = list; i; i = i-next) {
/* add the dependencies found by resolvedeps to the transaction set */
pmpkg_t *spkg = i-data;
-   if(!find_pkginsync(spkg-name, trans-packages)) {
+   if(!_pacman_trans_find(trans, spkg-name)) {
pmsyncpkg_t *ps = _pacman_sync_new(PM_SYNC_TYPE_DEPEND, spkg, NULL);
if(ps == NULL) {
ret = -1;
@@ -378,7 +360,7 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t **data)
continue;
}

-   ps = find_pkginsync(miss-target, 
trans-packages);
+   ps = _pacman_trans_find(trans, miss-target);
if(ps == NULL) {
_pacman_log(PM_LOG_DEBUG, _('%s' not found in transaction set -- skipping),
miss-target);
@@ -429,7 +411,7 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t **data)
rmpkg = miss-depend.name;
}
if(rmpkg) {
-   pmsyncpkg_t *rsync = 
find_pkginsync(rmpkg, trans-packages);
+   pmsyncpkg_t *rsync = 
_pacman_trans_find(trans, rmpkg);
pmsyncpkg_t *spkg = NULL;
_pacman_log(PM_LOG_FLOW2, _(removing '%s' from target list), rmpkg);
trans-packages = _pacman_list_remove(trans-packages, rsync, ptr_cmp, (void 
**)spkg);
@@ -447,7 +429,7 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t **data)
QUESTION(trans, PM_TRANS_CONV_CONFLICT_PKG, miss-target, miss-depend.name, 
NULL, doremove);
asked = _pacman_stringlist_append(asked, miss-depend.name);
if(doremove) {
-   pmsyncpkg_t *rsync = 
find_pkginsync(miss-depend.name, trans-packages);
+   pmsyncpkg_t *rsync = 
_pacman_trans_find(trans, miss-depend.name);
pmpkg_t *q = _pacman_pkg_new(miss-depend.name, NULL);
if(q == NULL) {
if(data) {
@@ -544,7 +526,7 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t **data)
int errorout = 0;
for(i = deps; i; i = i-next) {
pmdepmissing_t *miss = i-data;
-   if(!find_pkginsync(miss-depend.name, 
trans-packages)) {
+   if(!_pacman_trans_find(trans, 
miss-depend.name)) {
int pfound = 0;
/* If miss-depend.name depends on something that miss-target and a
* package in final both provide, then it's okay...  */
diff --git a/lib/libpacman/sync.h b/lib/libpacman/sync.h
index beb19a7..79f9221 100644
--- a/lib/libpacman/sync.h
+++ b/lib/libpacman/sync.h
@@ -38,7 +38,6 @@ struct __pmsyncpkg_t {

pmsyncpkg_t *_pacman_sync_new(int type, pmpkg_t *spkg, void *data);
void _pacman_sync_free(void *data);
-pmsyncpkg_t *find_pkginsync(char *needle, pmlist_t *haystack);

const pmtrans_ops_t _pacman_sync_pmtrans_opts;

diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c
index 9811507..575394e 100644
--- a/lib/libpacman/trans.c
+++ b/lib/libpacman/trans.c
@@ -208,6 +208,25 @@ void _pacman_trans_event(pmtrans_t *trans, unsigned char 
event, void *data1, voi
}
}

+/* Test for existence of a package in a pmlist_t* of pmsyncpkg_t*
+ * If found, return a pointer to the respective pmsyncpkg_t*
+ */
+pmsyncpkg_t *_pacman_trans_find(const pmtrans_t *trans, const char *pkgname)
+{
+   pmlist_t *i;
+
+   ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, NULL));
+
+   for(i = trans-packages; i != NULL ; i = i-next) {
+   pmsyncpkg_t *ps = i-data;
+
+   if(ps  !strcmp(ps-pkg-name, pkgname)) {
+   break

[Frugalware-git] pacman-g2: libpacman: Add pmsyncpkg_t::pkg_name.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=18855574711a1a83765e339a0d14fecfa0511cd1

commit 18855574711a1a83765e339a0d14fecfa0511cd1
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 15:51:35 2013 +0100

libpacman: Add pmsyncpkg_t::pkg_name.

diff --git a/lib/libpacman/sync.c b/lib/libpacman/sync.c
index 4efe654..d3a460c 100644
--- a/lib/libpacman/sync.c
+++ b/lib/libpacman/sync.c
@@ -68,6 +68,7 @@ pmsyncpkg_t *_pacman_sync_new(int type, pmpkg_t *spkg, void 
*data)
}

ps-type = type;
+   ps-pkg_name = spkg-name;
ps-pkg = spkg;
ps-data = data;

@@ -100,7 +101,7 @@ pmsyncpkg_t *find_pkginsync(char *needle, pmlist_t 
*haystack)

for(i = haystack; i != NULL ; i = i-next) {
ps = i-data;
-   if(ps  !strcmp(ps-pkg-name, needle)) {
+   if(ps  !strcmp(ps-pkg_name, needle)) {
return(ps);
}
}
@@ -728,7 +729,7 @@ int _pacman_sync_commit(pmtrans_t *trans, pmlist_t **data)
for(i = trans-packages; i; i = i-next) {
pmsyncpkg_t *ps = i-data;
if(ps-type == PM_SYNC_TYPE_REPLACE) {
-   pmpkg_t *new = 
_pacman_db_get_pkgfromcache(db_local, ps-pkg-name);
+   pmpkg_t *new = 
_pacman_db_get_pkgfromcache(db_local, ps-pkg_name);
for(j = ps-data; j; j = j-next) {
pmlist_t *k;
pmpkg_t *old = j-data;
diff --git a/lib/libpacman/sync.h b/lib/libpacman/sync.h
index 557240f..beb19a7 100644
--- a/lib/libpacman/sync.h
+++ b/lib/libpacman/sync.h
@@ -29,6 +29,7 @@

struct __pmsyncpkg_t {
unsigned char type;
+   const char *pkg_name;
pmpkg_t *pkg;
void *data;
};
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add PM_TRANS_SYNCPKGS (prepare to remove ambiguity of PM_TRANS_PACKAGES return value).

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=74545aa4e73931a153c79152945340c01ef4df5c

commit 74545aa4e73931a153c79152945340c01ef4df5c
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 16:44:28 2013 +0100

libpacman: Add PM_TRANS_SYNCPKGS (prepare to remove ambiguity of 
PM_TRANS_PACKAGES return value).

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 5496ac2..387de0c 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -70,6 +70,8 @@ pmsyncpkg_t: is now public and deprecate PM_SYNCPKG.

PM_PKG_TRIGGERS: Access to package triggers list.

+PM_TRANS_SYNCPKGS: Access to transaction syncpkgs list.
+
 Symbols removed:

PM_NETBUF, PM_OPT_DLOFFSET, PM_OPT_DLT0: Remove due to code refactor so public 
API does not try to hide that it use libftp internal callback. See 
pacman_trans_cb_download changes.
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 5fa9dec..0c58a55 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -731,6 +731,7 @@ void *pacman_trans_getinfo(unsigned char parm)
case PM_TRANS_FLAGS:data = (void *)(long)trans-flags; break;
case PM_TRANS_TARGETS:  data = trans-targets; break;
case PM_TRANS_PACKAGES: data = trans-packages; break;
+   case PM_TRANS_SYNCPKGS: data = trans-syncpkgs; break;
default:
data = NULL;
break;
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index 7702fd4..a833bdc 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -368,7 +368,8 @@ enum {
PM_TRANS_TYPE = 1,
PM_TRANS_FLAGS,
PM_TRANS_TARGETS,
-   PM_TRANS_PACKAGES
+   PM_TRANS_PACKAGES,
+   PM_TRANS_SYNCPKGS
};

void *pacman_trans_getinfo(unsigned char parm);
diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h
index af8c2a7..806e807 100644
--- a/lib/libpacman/trans.h
+++ b/lib/libpacman/trans.h
@@ -62,6 +62,7 @@ struct __pmtrans_t {
unsigned char state;
FStringList *targets;
pmlist_t *packages;/* pmlist_t of (pmpkg_t *) or (pmsyncpkg_t *) */
+   FPtrList *syncpkgs; /* FPtrList of (pmsyncpkg_t *) */
FStringList *skiplist;
FStringList *triggers;
pmtrans_cbs_t cbs;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make sync.c use pmtrans_t::syncpkgs.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f2b8082250e3d71dc4ab0680676295d908848166

commit f2b8082250e3d71dc4ab0680676295d908848166
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 21:36:22 2013 +0100

libpacman: Make sync.c use pmtrans_t::syncpkgs.

diff --git a/lib/libpacman/deps.c b/lib/libpacman/deps.c
index dc9aa5c..5d86149 100644
--- a/lib/libpacman/deps.c
+++ b/lib/libpacman/deps.c
@@ -410,13 +410,16 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned 
char op, pmlist_t *packag
if(!_pacman_list_is_strin((char *)j-data, packages)) {
/* check if a package in trans-packages provides this package */
for(k=trans-packages; !found  k; k=k-next) {
-   pmpkg_t *spkg = NULL;
-   if(trans-type == PM_TRANS_TYPE_SYNC) {
-   pmsyncpkg_t *ps = k-data;
-   spkg = ps-pkg;
-   } else {
-   spkg = k-data;
+   pmpkg_t *spkg = k-data;
+
+   if(spkg  
_pacman_list_is_strin(tp-name, _pacman_pkg_getinfo(spkg, PM_PKG_PROVIDES))) {
+   found=1;
+   }
}
+   for(k=trans-syncpkgs; !found  k; 
k=k-next) {
+   pmsyncpkg_t *ps = k-data;
+   pmpkg_t *spkg = ps-pkg;
+
if(spkg  _pacman_list_is_strin(tp-name, _pacman_pkg_getinfo(spkg, 
PM_PKG_PROVIDES))) {
found=1;
}
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 0c58a55..1506aaa 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -730,7 +730,7 @@ void *pacman_trans_getinfo(unsigned char parm)
case PM_TRANS_TYPE: data = (void *)(long)trans-type; break;
case PM_TRANS_FLAGS:data = (void *)(long)trans-flags; break;
case PM_TRANS_TARGETS:  data = trans-targets; break;
-   case PM_TRANS_PACKAGES: data = trans-packages; break;
+   case PM_TRANS_PACKAGES: data = trans-packages ? 
trans-packages : trans-syncpkgs; break;
case PM_TRANS_SYNCPKGS: data = trans-syncpkgs; break;
default:
data = NULL;
diff --git a/lib/libpacman/sync.c b/lib/libpacman/sync.c
index 0a62f38..c1488c4 100644
--- a/lib/libpacman/sync.c
+++ b/lib/libpacman/sync.c
@@ -191,7 +191,7 @@ int _pacman_sync_addtarget(pmtrans_t *trans, const char 
*name)
RET_ERR(PM_ERR_MEMORY, -1);
}
_pacman_log(PM_LOG_FLOW2, _(adding target '%s' to the transaction set), 
spkg-name);
-   trans-packages = _pacman_list_add(trans-packages, ps);
+   trans-syncpkgs = _pacman_list_add(trans-syncpkgs, ps);
}

return(0);
@@ -242,12 +242,13 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t 
**data)

ASSERT(db_local != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
+   ASSERT(trans-packages == NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));

if(data) {
*data = NULL;
}

-   for(i = trans-packages; i; i = i-next) {
+   for(i = trans-syncpkgs; i; i = i-next) {
pmsyncpkg_t *ps = i-data;
list = _pacman_list_add(list, ps-pkg);
}
@@ -258,7 +259,7 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t **data)
/* Resolve targets dependencies */
EVENT(trans, PM_TRANS_EVT_RESOLVEDEPS_START, NULL, NULL);
_pacman_log(PM_LOG_FLOW1, _(resolving targets dependencies));
-   for(i = trans-packages; i; i = i-next) {
+   for(i = trans-syncpkgs; i; i = i-next) {
pmpkg_t *spkg = ((pmsyncpkg_t *)i-data)-pkg;
if(_pacman_resolvedeps(trans, spkg, list, trail, data) == -1) {
/* pm_errno is set by resolvedeps */
@@ -276,27 +277,27 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t 
**data)
ret = -1;
goto cleanup;
}
-   trans-packages = 
_pacman_list_add(trans-packages, ps);
+   trans-syncpkgs = 
_pacman_list_add(trans-syncpkgs, ps);
_pacman_log(PM_LOG_FLOW2, _(adding package %s-%s to the transaction targets),
spkg-name, spkg-version);
} else {
/* remove the original targets from the list if requested */
if((trans-flags  PM_TRANS_FLAG_DEPENDSONLY)) {
/* they are just pointers so we don't have to free them */
-   trans-packages = 
_pacman_list_remove(trans-packages, spkg, pkg_cmp, NULL);
+   trans-syncpkgs = 
_pacman_list_remove(trans-syncpkgs, spkg, pkg_cmp, NULL);
}
}
}

/* re-order w.r.t. dependencies */
k = l = NULL;
-   for(i=trans-packages; i; i=i-next) {
+   for(i=trans-syncpkgs; i; i=i-next) {
pmsyncpkg_t *s = (pmsyncpkg_t*)i-data;
k = _pacman_list_add(k, s-pkg);
}
m = _pacman_sortbydeps(k, PM_TRANS_TYPE_ADD);
for(i=m; i; i=i-next

[Frugalware-git] pacman-g2: libpacman: Avoid calling _pacman_db_gettimestamp with NULL.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=ce3a2151a36d751d22c9a5a4ffaf3e646ca4ffdc

commit ce3a2151a36d751d22c9a5a4ffaf3e646ca4ffdc
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 21:48:47 2013 +0100

libpacman: Avoid calling _pacman_db_gettimestamp with NULL.

diff --git a/lib/libpacman/db/syncdb.c b/lib/libpacman/db/syncdb.c
index 43e89b3..4610736 100644
--- a/lib/libpacman/db/syncdb.c
+++ b/lib/libpacman/db/syncdb.c
@@ -156,7 +156,9 @@ int _pacman_syncdb_open(pmdb_t *db, int flags, time_t 
*timestamp)
if((db-handle = _pacman_archive_read_open_all_file(dbpath)) == NULL) {
RET_ERR(PM_ERR_DB_OPEN, -1);
}
-   _pacman_db_gettimestamp(db, timestamp);
+   if(timestamp != NULL) {
+   _pacman_db_gettimestamp(db, timestamp);
+   }
return 0;
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Modify conditions checks for empty transaction.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e68590e25aaebf9bdaac01e17744bd366bed2839

commit e68590e25aaebf9bdaac01e17744bd366bed2839
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 22:24:12 2013 +0100

libpacman: Modify conditions checks for empty transaction.

diff --git a/lib/libpacman/add.c b/lib/libpacman/add.c
index a00b5df..83bb12c 100644
--- a/lib/libpacman/add.c
+++ b/lib/libpacman/add.c
@@ -265,10 +265,6 @@ int _pacman_add_commit(pmtrans_t *trans, pmlist_t **data)
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(db_local != NULL, RET_ERR(PM_ERR_DB_NULL, -1));

-   if(_pacman_list_empty(trans-packages)) {
-   return(0);
-   }
-
for(targ = trans-packages; targ; targ = targ-next) {
unsigned short pmo_upgrade;
char pm_install[PATH_MAX];
diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c
index 7428bdb..840f989 100644
--- a/lib/libpacman/trans.c
+++ b/lib/libpacman/trans.c
@@ -284,7 +284,8 @@ int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t **data)
*data = NULL;

/* If there's nothing to do, return without complaining */
-   if(_pacman_list_empty(trans-packages)) {
+   if(_pacman_list_empty(trans-packages) 
+   _pacman_list_empty(trans-syncpkgs)) {
return(0);
}

@@ -311,7 +312,8 @@ int _pacman_trans_commit(pmtrans_t *trans, pmlist_t **data)
*data = NULL;

/* If there's nothing to do, return without complaining */
-   if(_pacman_list_empty(trans-packages)) {
+   if(_pacman_list_empty(trans-packages) 
+   _pacman_list_empty(trans-syncpkgs)) {
return(0);
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Some fixes.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=70455fb79f87ca555dc69e371b3ac652b751

commit 70455fb79f87ca555dc69e371b3ac652b751
Author: Michel Hermier herm...@frugalware.org
Date:   Mon Nov 18 23:05:48 2013 +0100

libpacman: Some fixes.

diff --git a/lib/libpacman/sync.c b/lib/libpacman/sync.c
index c1488c4..27e3962 100644
--- a/lib/libpacman/sync.c
+++ b/lib/libpacman/sync.c
@@ -642,7 +642,7 @@ int _pacman_sync_commit(pmtrans_t *trans, pmlist_t **data)
if(ps-type == PM_SYNC_TYPE_REPLACE) {
for(j = ps-data; j; j = j-next) {
pmpkg_t *pkg = j-data;
-   if(!_pacman_pkg_isin(pkg-name, tr-syncpkgs)) {
+   if(!_pacman_pkg_isin(pkg-name, tr-packages)) {
if(_pacman_trans_addtarget(tr, pkg-name) == -1) {
goto error;
}
diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c
index 840f989..879fa03 100644
--- a/lib/libpacman/trans.c
+++ b/lib/libpacman/trans.c
@@ -126,6 +126,7 @@ void _pacman_trans_fini(pmtrans_t *trans)

FREELIST(trans-targets);
FREELISTPKGS(trans-packages);
+#if 0
{
pmlist_t *i;
for(i = trans-syncpkgs; i; i = i-next) {
@@ -133,6 +134,7 @@ void _pacman_trans_fini(pmtrans_t *trans)
}
FREELIST(trans-syncpkgs);
}
+#endif
FREELIST(trans-skiplist);
FREELIST(trans-triggers);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: cmake: Add FAKEROOT_PROOF option to replace --enable-fakeroot.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=3b45c90149e360492307281b574b87a9c928f754

commit 3b45c90149e360492307281b574b87a9c928f754
Author: Michel Hermier herm...@frugalware.org
Date:   Tue Nov 19 00:05:52 2013 +0100

cmake: Add FAKEROOT_PROOF option to replace --enable-fakeroot.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c93c1ba..9c3f833 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,6 +16,7 @@ string (REPLACE ;  PM_VERSION ${PM_VERSION_TEMP})
set (CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -std=c99 -D_GNU_SOURCE)

option(DISABLE_BINDING disables all libpacman bindings OFF)
+option(FAKEROOT_PROOF enable fakeroot proof protection OFF)

SET(ENABLE_NLS TRUE CACHE BOOL Translation program messages to the user's 
native language ?)

diff --git a/cmake_config.h b/cmake_config.h
index 170e289..1211b39 100644
--- a/cmake_config.h
+++ b/cmake_config.h
@@ -111,3 +111,5 @@
/* Version number of package */
#define VERSION @PACMAN_G2_VERSION@

+/* Define fakeroot protection */
+#cmakedefine FAKEROOT_PROOF 1
diff --git a/lib/libpacman/handle.c b/lib/libpacman/handle.c
index 44a09ad..0f320d9 100644
--- a/lib/libpacman/handle.c
+++ b/lib/libpacman/handle.c
@@ -59,7 +59,7 @@ pmhandle_t *_pacman_handle_new()
#ifndef CYGWIN
/* see if we're root or not */
ph-uid = geteuid();
-#ifndef FAKEROOT
+#ifdef FAKEROOT_PROOF
if(!ph-uid  getenv(FAKEROOTKEY)) {
/* fakeroot doesn't count, we're non-root */
ph-uid = 99;
@@ -67,7 +67,7 @@ pmhandle_t *_pacman_handle_new()
#endif

/* see if we're root or not (fakeroot does not count) */
-#ifndef FAKEROOT
+#ifdef FAKEROOT_PROOF
if(ph-uid == 0  !getenv(FAKEROOTKEY)) {
#else
if(ph-uid == 0) {
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Fix _pacman_trans_find.

2013-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=1db5e9699706f498fe4f8a1155343fbf6e833f87

commit 1db5e9699706f498fe4f8a1155343fbf6e833f87
Author: Michel Hermier herm...@frugalware.org
Date:   Tue Nov 19 08:40:54 2013 +0100

libpacman: Fix _pacman_trans_find.

diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c
index 879fa03..15d4230 100644
--- a/lib/libpacman/trans.c
+++ b/lib/libpacman/trans.c
@@ -218,11 +218,11 @@ pmsyncpkg_t *_pacman_trans_find(const pmtrans_t *trans, 
const char *pkgname)

ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, NULL));

-   for(i = trans-packages; i != NULL ; i = i-next) {
+   for(i = trans-syncpkgs; i != NULL ; i = i-next) {
pmsyncpkg_t *ps = i-data;

if(ps  !strcmp(ps-pkg-name, pkgname)) {
-   break;
+   return ps;
}
}
return NULL;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Rename _pacman_list_free to f_ptrlist_free.

2013-11-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f8b764f8b049f846b04dc43fe126b0ccb06ecbff

commit f8b764f8b049f846b04dc43fe126b0ccb06ecbff
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 23:53:07 2013 +0100

libpacman: Rename _pacman_list_free to f_ptrlist_free.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index 75efa1f..4052c48 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -44,20 +44,6 @@ pmlist_t *_pacman_list_new()
return(list);
}

-void _pacman_list_free(pmlist_t *list, _pacman_fn_free fn)
-{
-   pmlist_t *ptr, *it = list;
-
-   while(it) {
-   ptr = it-next;
-   if(fn) {
-   fn(it-data);
-   }
-   free(it);
-   it = ptr;
-   }
-}
-
int f_list_contains(const pmlist_t *list, flist_compar_t compar, const void 
*compar_data)
{
for(; list != NULL; list = list-next) {
@@ -260,4 +246,23 @@ pmlist_t *_pacman_list_reverse(pmlist_t *list)
return(newlist);
}

+void f_ptrlist_free(pmlist_t *list, FVisitorFunc visitor, void *visitor_data)
+{
+   f_ptrlist_clear(list, visitor, visitor_data);
+}
+
+void f_ptrlist_clear(pmlist_t *list, FVisitorFunc visitor, void *visitor_data)
+{
+   pmlist_t *next;
+
+   while(list != NULL) {
+   next = list-next;
+   if(visitor != NULL) {
+   visitor(list-data, visitor_data);
+   }
+   free(list);
+   list = next;
+   }
+}
+
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 620110b..e729590 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -23,6 +23,8 @@

#include pacman.h

+typedef int (*FVisitorFunc)(void *ptr, void *visitor_data);
+
typedef int (*flist_compar_t)(const pmlist_t *item, const void *compar_data);
typedef int (*flist_visitor_t)(pmlist_t *item, void *visitor_data);

@@ -34,16 +36,14 @@ struct __pmlist_t {
struct __pmlist_t *last; /* Quick access to last item in list */
};

-#define _FREELIST(p, f) do { if(p) { _pacman_list_free(p, f); p = NULL; } } 
while(0)
+#define _FREELIST(p, f) do { if(p) { f_ptrlist_free(p, (FVisitorFunc)f, NULL); 
p = NULL; } } while(0)
#define FREELIST(p) _FREELIST(p, free)
#define FREELISTPTR(p) _FREELIST(p, NULL)

-typedef void (*_pacman_fn_free)(void *);
/* Sort comparison callback function declaration */
typedef int (*_pacman_fn_cmp)(const void *, const void *);

pmlist_t *_pacman_list_new(void);
-void _pacman_list_free(pmlist_t *list, _pacman_fn_free fn);

int f_list_contains(const pmlist_t *list, flist_compar_t compar, const void 
*compar_data);
int _pacman_list_count(const pmlist_t *list);
@@ -57,6 +57,10 @@ pmlist_t *_pacman_list_remove(pmlist_t *haystack, void 
*needle, _pacman_fn_cmp f
pmlist_t *_pacman_list_last(pmlist_t *list);
pmlist_t *_pacman_list_reverse(pmlist_t *list);

+void f_ptrlist_free(pmlist_t *list, FVisitorFunc visitor, void *visitor_data);
+
+void f_ptrlist_clear(pmlist_t *list, FVisitorFunc visitor, void *visitor_data);
+
#endif /* _PACMAN_LIST_H */

/* vim: set ts=2 sw=2 noet: */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove const to item in flist_visitor_t.

2013-11-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b20698584eda4c9e2c5c363059ddef5b35244488

commit b20698584eda4c9e2c5c363059ddef5b35244488
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 22:38:07 2013 +0100

libpacman: Remove const to item in flist_visitor_t.

diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 4a74b48..620110b 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -24,7 +24,7 @@
#include pacman.h

typedef int (*flist_compar_t)(const pmlist_t *item, const void *compar_data);
-typedef int (*flist_visitor_t)(const pmlist_t *item, void *visitor_data);
+typedef int (*flist_visitor_t)(pmlist_t *item, void *visitor_data);

/* Chained list struct */
struct __pmlist_t {
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Move callbacks to util/fcallbacks.h

2013-11-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=5a8f4536204425907c11b9c3ee727e7aa25bf781

commit 5a8f4536204425907c11b9c3ee727e7aa25bf781
Author: Michel Hermier herm...@frugalware.org
Date:   Sun Nov 17 09:48:23 2013 +0100

libpacman: Move callbacks to util/fcallbacks.h

diff --git a/lib/libpacman/util/fcallback.h b/lib/libpacman/util/fcallback.h
new file mode 100644
index 000..76c1d25
--- /dev/null
+++ b/lib/libpacman/util/fcallback.h
@@ -0,0 +1,46 @@
+/*
+ *  fcallbacks.h
+ *
+ *  Copyright (c) 2013 by Michel Hermier herm...@frugalware.org
+ *
+ *  This program 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 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ *  USA.
+ */
+#ifndef F_CALLBACKS_H
+#define F_CALLBACKS_H
+
+#include util.h
+
+typedef int (*FComparatorFunc)(const void *ptr, const void *visitor_data);
+typedef void (*FVisitorFunc)(void *ptr, void *visitor_data);
+
+typedef struct __FVisitor FVisitor;
+
+struct __FVisitor {
+   FVisitorFunc fn;
+   void *data;
+};
+
+static inline
+void f_visit(void *ptr, const FVisitor *visitor) {
+   ASSERT(visitor != NULL, return);
+   ASSERT(visitor-fn != NULL, return);
+
+   visitor-fn(ptr, visitor-data);
+}
+
+#endif /* F_CALLBACKS_H */
+
+/* vim: set ts=2 sw=2 noet: */
\ No newline at end of file
diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index f845d14..226d5fd 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -30,6 +30,26 @@
#include fstdlib.h
#include util.h

+void f_listitem_delete(FListItem *item, FListItemVisitorFunc visitor_fn, void 
*visitor_data)
+{
+   FVisitor visitor = {
+   .fn = (FVisitorFunc)visitor_fn,
+   .data = visitor_data,
+   };
+
+   ASSERT(item != NULL, return);
+
+   f_listitem_delete_visit(item, visitor);
+}
+
+void f_listitem_delete_visit(FListItem *item, FVisitor *visitor)
+{
+   ASSERT(item != NULL, return);
+
+   f_visit(item, visitor);
+   free(item);
+}
+
int f_list_contains(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data)
{
for(; list != NULL; list = list-next) {
@@ -247,6 +267,25 @@ FPtrList *f_ptrlist_new(void)
return (FPtrList *)item;
}

+void f_ptrlistitem_delete(FListItem *item, FVisitorFunc visitor_fn, void 
*visitor_data)
+{
+   FVisitor visitor = {
+   .fn = visitor_fn,
+   .data = visitor_data,
+   };
+
+   ASSERT(item != NULL, return);
+
+   f_ptrlistitem_delete_visit(item, visitor);
+}
+
+void f_ptrlistitem_delete_visit(FListItem *item, FVisitor *visitor)
+{
+   ASSERT(item != NULL, return);
+
+   f_listitem_delete_visit(item, visitor);
+}
+
void f_ptrlist_free(FPtrList *list, FVisitorFunc visitor, void *visitor_data)
{
f_ptrlist_clear(list, visitor, visitor_data);
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 4073229..7dc0112 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -23,8 +23,7 @@

#include pacman.h

-typedef int (*FComparatorFunc)(const void *ptr, const void *visitor_data);
-typedef void (*FVisitorFunc)(void *ptr, void *visitor_data);
+#include util/fcallback.h

typedef struct __pmlist_t FList;
typedef struct __pmlist_t FListItem;
@@ -52,6 +51,9 @@ typedef int (*_pacman_fn_cmp)(const void *, const void *);
#define _pacman_list_count f_ptrlist_count
#define _pacman_list_empty f_ptrlist_empty

+void f_listitem_delete(FListItem *item, FListItemVisitorFunc visitor_fn, void 
*visitor_data);
+void f_listitem_delete_visit(FListItem *item, FVisitor *visitor);
+
int f_list_contains(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data);
int f_list_count(const FList *list);
int f_list_empty(const FList *list);
@@ -68,6 +70,8 @@ typedef struct __pmlist_t FPtrList;
typedef struct __pmlist_t FPtrListItem;

FPtrListItem *f_ptrlistitem_new(void *ptr);
+void f_ptrlistitem_delete(FListItem *item, FVisitorFunc visitor_fn, void 
*visitor_data);
+void f_ptrlistitem_delete_visit(FListItem *item, FVisitor *visitor);

FPtrList *f_ptrlist_new(void);
void f_ptrlist_free(FPtrList *list, FVisitorFunc visitor, void *visitor_data);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Introduce f_ptrlist_count and f_ptrlist_empty.

2013-11-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b467a00db66616ae659b176dd12982a629ac3df0

commit b467a00db66616ae659b176dd12982a629ac3df0
Author: Michel Hermier herm...@frugalware.org
Date:   Sun Nov 17 01:15:56 2013 +0100

libpacman: Introduce f_ptrlist_count and f_ptrlist_empty.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index bce8641..f845d14 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -40,16 +40,15 @@ int f_list_contains(const FList *list, 
FListItemComparatorFunc comparator, const
return 0;
}

-int _pacman_list_count(const FList *list)
+int f_list_count(const FList *list)
{
int i;

for(i = 0; list; list = list-next, i++);
-
-   return(i);
+   return i;
}

-int _pacman_list_empty(const FList *list)
+int f_list_empty(const FList *list)
{
return list == NULL;
}
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 7ea698f..4073229 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -49,9 +49,12 @@ typedef int (*_pacman_fn_cmp)(const void *, const void *);

#define _pacman_list_new f_ptrlist_new

+#define _pacman_list_count f_ptrlist_count
+#define _pacman_list_empty f_ptrlist_empty
+
int f_list_contains(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data);
-int _pacman_list_count(const FList *list);
-int _pacman_list_empty(const FList *list);
+int f_list_count(const FList *list);
+int f_list_empty(const FList *list);
int _pacman_list_is_in(void *needle, const pmlist_t *haystack);
void f_list_foreach(const FList *list, FListItemVisitorFunc visitor, void 
*visitor_data);

@@ -70,6 +73,8 @@ FPtrList *f_ptrlist_new(void);
void f_ptrlist_free(FPtrList *list, FVisitorFunc visitor, void *visitor_data);

void f_ptrlist_clear(FPtrList *list, FVisitorFunc visitor, void *visitor_data);
+#define f_ptrlist_count f_list_count
+#define f_ptrlist_empty f_list_empty

#endif /* _PACMAN_LIST_H */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Fix some names in list implementation.

2013-11-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=35a9b1c8ec518284b1d328cef484a4ef58950aa9

commit 35a9b1c8ec518284b1d328cef484a4ef58950aa9
Author: Michel Hermier herm...@frugalware.org
Date:   Sun Nov 17 00:13:24 2013 +0100

libpacman: Fix some names in list implementation.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index 2be3b57..8f8e885 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -44,10 +44,10 @@ pmlist_t *_pacman_list_new()
return(list);
}

-int f_list_contains(const pmlist_t *list, flist_compar_t compar, const void 
*compar_data)
+int f_list_contains(const pmlist_t *list, FListItemComparatorFunc comparator, 
const void *comparator_data)
{
for(; list != NULL; list = list-next) {
-   if(compar(list, compar_data) == 0) {
+   if(comparator(list, comparator_data) == 0) {
return 1;
}
}
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 4a05c81..792b49e 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -23,10 +23,11 @@

#include pacman.h

-typedef int (*FVisitorFunc)(void *ptr, void *visitor_data);
+typedef int (*FComparatorFunc)(const void *ptr, const void *visitor_data);
+typedef void (*FVisitorFunc)(void *ptr, void *visitor_data);

-typedef int (*flist_compar_t)(const pmlist_t *item, const void *compar_data);
-typedef int (*FListItemVisitorFunc)(pmlist_t *item, void *visitor_data);
+typedef int (*FListItemComparatorFunc)(const pmlist_t *item, const void 
*comparator_data);
+typedef void (*FListItemVisitorFunc)(pmlist_t *item, void *visitor_data);

/* Chained list struct */
struct __pmlist_t {
@@ -45,7 +46,7 @@ typedef int (*_pacman_fn_cmp)(const void *, const void *);

pmlist_t *_pacman_list_new(void);

-int f_list_contains(const pmlist_t *list, flist_compar_t compar, const void 
*compar_data);
+int f_list_contains(const pmlist_t *list, FListItemComparatorFunc comparator, 
const void *comparator_data);
int _pacman_list_count(const pmlist_t *list);
int _pacman_list_empty(const pmlist_t *list);
int _pacman_list_is_in(void *needle, const pmlist_t *haystack);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add f_ptrlistitem_new.

2013-11-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a9563eb9a08c27d0438cc23b4875c2c1ff75dfe0

commit a9563eb9a08c27d0438cc23b4875c2c1ff75dfe0
Author: Michel Hermier herm...@frugalware.org
Date:   Sun Nov 17 00:34:32 2013 +0100

libpacman: Add f_ptrlistitem_new.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index f8d6e9d..72fe3f7 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -245,6 +245,16 @@ pmlist_t *_pacman_list_reverse(pmlist_t *list)
return(newlist);
}

+FPtrListItem *f_ptrlistitem_new(void *ptr)
+{
+   FPtrListItem *item = f_zalloc(sizeof(*item));
+
+   if(item != NULL) {
+   item-data = ptr;
+   }
+   return item;
+}
+
void f_ptrlist_free(FPtrList *list, FVisitorFunc visitor, void *visitor_data)
{
f_ptrlist_clear(list, visitor, visitor_data);
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 888b986..5ad41c9 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -64,6 +64,8 @@ pmlist_t *_pacman_list_reverse(pmlist_t *list);
typedef struct __pmlist_t FPtrList;
typedef struct __pmlist_t FPtrListItem;

+FPtrListItem *f_ptrlistitem_new(void *ptr);
+
void f_ptrlist_free(FPtrList *list, FVisitorFunc visitor, void *visitor_data);

void f_ptrlist_clear(FPtrList *list, FVisitorFunc visitor, void *visitor_data);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Move __pmlist_t::data position in the structure.

2013-11-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=fbeefd12e0da3b7787363bf4fcc0f34e82092277

commit fbeefd12e0da3b7787363bf4fcc0f34e82092277
Author: Michel Hermier herm...@frugalware.org
Date:   Sun Nov 17 01:00:33 2013 +0100

libpacman: Move __pmlist_t::data position in the structure.

diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index e652fd4..7ea698f 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -34,9 +34,9 @@ typedef void (*FListItemVisitorFunc)(FListItem *item, void 
*visitor_data);

/* Chained list struct */
struct __pmlist_t {
-   void *data;
struct __pmlist_t *prev;
struct __pmlist_t *next;
+   void *data;
struct __pmlist_t *last; /* Quick access to last item in list */
};
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Introduce FList and FPtrList names.

2013-11-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=4dc6861de971b93436664b65ac2a27bb0974fdd1

commit 4dc6861de971b93436664b65ac2a27bb0974fdd1
Author: Michel Hermier herm...@frugalware.org
Date:   Sun Nov 17 00:24:53 2013 +0100

libpacman: Introduce FList and FPtrList names.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index 8f8e885..f8d6e9d 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -30,9 +30,9 @@
#include fstdlib.h
#include util.h

-pmlist_t *_pacman_list_new()
+FList *_pacman_list_new()
{
-   pmlist_t *list = _pacman_malloc(sizeof(pmlist_t));
+   FList *list = _pacman_malloc(sizeof(*list));

if(list == NULL) {
return(NULL);
@@ -44,7 +44,7 @@ pmlist_t *_pacman_list_new()
return(list);
}

-int f_list_contains(const pmlist_t *list, FListItemComparatorFunc comparator, 
const void *comparator_data)
+int f_list_contains(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data)
{
for(; list != NULL; list = list-next) {
if(comparator(list, comparator_data) == 0) {
@@ -54,30 +54,29 @@ int f_list_contains(const pmlist_t *list, 
FListItemComparatorFunc comparator, co
return 0;
}

-int _pacman_list_count(const pmlist_t *list)
+int _pacman_list_count(const FList *list)
{
int i;
-   const pmlist_t *lp;

-   for(lp = list, i = 0; lp; lp = lp-next, i++);
+   for(i = 0; list; list = list-next, i++);

return(i);
}

-int _pacman_list_empty(const pmlist_t *list)
+int _pacman_list_empty(const FList *list)
{
return list == NULL;
}

-void f_list_foreach(const pmlist_t *list, FListItemVisitorFunc visitor, void 
*visitor_data)
+void f_list_foreach(const FList *list, FListItemVisitorFunc visitor, void 
*visitor_data)
{
for(; list != NULL; list = list-next) {
-   visitor((pmlist_t *)list, visitor_data);
+   visitor((FListItem *)list, visitor_data);
}
}

static
-int _pacman_ptrlistitem_ptrcmp(const pmlist_t *item, const void *ptr) {
+int _pacman_ptrlistitem_ptrcmp(const FListItem *item, const void *ptr) {
return f_ptrcmp(item-data, ptr);
}

@@ -246,14 +245,14 @@ pmlist_t *_pacman_list_reverse(pmlist_t *list)
return(newlist);
}

-void f_ptrlist_free(pmlist_t *list, FVisitorFunc visitor, void *visitor_data)
+void f_ptrlist_free(FPtrList *list, FVisitorFunc visitor, void *visitor_data)
{
f_ptrlist_clear(list, visitor, visitor_data);
}

-void f_ptrlist_clear(pmlist_t *list, FVisitorFunc visitor, void *visitor_data)
+void f_ptrlist_clear(FPtrList *list, FVisitorFunc visitor, void *visitor_data)
{
-   pmlist_t *next;
+   FPtrList *next;

while(list != NULL) {
next = list-next;
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 792b49e..888b986 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -26,8 +26,11 @@
typedef int (*FComparatorFunc)(const void *ptr, const void *visitor_data);
typedef void (*FVisitorFunc)(void *ptr, void *visitor_data);

-typedef int (*FListItemComparatorFunc)(const pmlist_t *item, const void 
*comparator_data);
-typedef void (*FListItemVisitorFunc)(pmlist_t *item, void *visitor_data);
+typedef struct __pmlist_t FList;
+typedef struct __pmlist_t FListItem;
+
+typedef int (*FListItemComparatorFunc)(const FListItem *item, const void 
*comparator_data);
+typedef void (*FListItemVisitorFunc)(FListItem *item, void *visitor_data);

/* Chained list struct */
struct __pmlist_t {
@@ -44,13 +47,13 @@ struct __pmlist_t {
/* Sort comparison callback function declaration */
typedef int (*_pacman_fn_cmp)(const void *, const void *);

-pmlist_t *_pacman_list_new(void);
+FList *_pacman_list_new(void);

-int f_list_contains(const pmlist_t *list, FListItemComparatorFunc comparator, 
const void *comparator_data);
-int _pacman_list_count(const pmlist_t *list);
-int _pacman_list_empty(const pmlist_t *list);
+int f_list_contains(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data);
+int _pacman_list_count(const FList *list);
+int _pacman_list_empty(const FList *list);
int _pacman_list_is_in(void *needle, const pmlist_t *haystack);
-void f_list_foreach(const pmlist_t *list, FListItemVisitorFunc visitor, void 
*visitor_data);
+void f_list_foreach(const FList *list, FListItemVisitorFunc visitor, void 
*visitor_data);

pmlist_t *_pacman_list_add(pmlist_t *list, void *data);
pmlist_t *_pacman_list_add_sorted(pmlist_t *list, void *data, _pacman_fn_cmp 
fn);
@@ -58,9 +61,12 @@ pmlist_t *_pacman_list_remove(pmlist_t *haystack, void 
*needle, _pacman_fn_cmp f
pmlist_t *_pacman_list_last(pmlist_t *list);
pmlist_t *_pacman_list_reverse(pmlist_t *list);

-void f_ptrlist_free(pmlist_t *list, FVisitorFunc visitor, void *visitor_data);
+typedef struct __pmlist_t FPtrList;
+typedef struct __pmlist_t FPtrListItem;
+
+void f_ptrlist_free(FPtrList *list, FVisitorFunc visitor, void *visitor_data);

-void f_ptrlist_clear(pmlist_t *list, FVisitorFunc visitor, void *visitor_data);
+void f_ptrlist_clear(FPtrList *list

[Frugalware-git] pacman-g2: libpacman: Rename flist_visitor_t to FListItemVisitorFunc.

2013-11-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b22ee1db809d2db6630a6b413588bc036352d8a8

commit b22ee1db809d2db6630a6b413588bc036352d8a8
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 23:58:33 2013 +0100

libpacman: Rename flist_visitor_t to FListItemVisitorFunc.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index 4052c48..2be3b57 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -69,10 +69,10 @@ int _pacman_list_empty(const pmlist_t *list)
return list == NULL;
}

-void f_list_foreach(const pmlist_t *list, flist_visitor_t visitor, void 
*visitor_data)
+void f_list_foreach(const pmlist_t *list, FListItemVisitorFunc visitor, void 
*visitor_data)
{
for(; list != NULL; list = list-next) {
-   visitor(list, visitor_data);
+   visitor((pmlist_t *)list, visitor_data);
}
}

diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index e729590..4a05c81 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -26,7 +26,7 @@
typedef int (*FVisitorFunc)(void *ptr, void *visitor_data);

typedef int (*flist_compar_t)(const pmlist_t *item, const void *compar_data);
-typedef int (*flist_visitor_t)(pmlist_t *item, void *visitor_data);
+typedef int (*FListItemVisitorFunc)(pmlist_t *item, void *visitor_data);

/* Chained list struct */
struct __pmlist_t {
@@ -49,7 +49,7 @@ int f_list_contains(const pmlist_t *list, flist_compar_t 
compar, const void *com
int _pacman_list_count(const pmlist_t *list);
int _pacman_list_empty(const pmlist_t *list);
int _pacman_list_is_in(void *needle, const pmlist_t *haystack);
-void f_list_foreach(const pmlist_t *list, flist_visitor_t visitor, void 
*visitor_data);
+void f_list_foreach(const pmlist_t *list, FListItemVisitorFunc visitor, void 
*visitor_data);

pmlist_t *_pacman_list_add(pmlist_t *list, void *data);
pmlist_t *_pacman_list_add_sorted(pmlist_t *list, void *data, _pacman_fn_cmp 
fn);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add f_ptrlist_new.

2013-11-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b22308022b9dcb42ad297dd2e510d5fb59719265

commit b22308022b9dcb42ad297dd2e510d5fb59719265
Author: Michel Hermier herm...@frugalware.org
Date:   Sun Nov 17 00:48:44 2013 +0100

libpacman: Add f_ptrlist_new.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index 72fe3f7..bce8641 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -30,20 +30,6 @@
#include fstdlib.h
#include util.h

-FList *_pacman_list_new()
-{
-   FList *list = _pacman_malloc(sizeof(*list));
-
-   if(list == NULL) {
-   return(NULL);
-   }
-   list-data = NULL;
-   list-prev = NULL;
-   list-next = NULL;
-   list-last = list;
-   return(list);
-}
-
int f_list_contains(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data)
{
for(; list != NULL; list = list-next) {
@@ -255,6 +241,13 @@ FPtrListItem *f_ptrlistitem_new(void *ptr)
return item;
}

+FPtrList *f_ptrlist_new(void)
+{
+   FPtrListItem *item = f_ptrlistitem_new(NULL);
+   item-last = item;
+   return (FPtrList *)item;
+}
+
void f_ptrlist_free(FPtrList *list, FVisitorFunc visitor, void *visitor_data)
{
f_ptrlist_clear(list, visitor, visitor_data);
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 5ad41c9..e652fd4 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -47,7 +47,7 @@ struct __pmlist_t {
/* Sort comparison callback function declaration */
typedef int (*_pacman_fn_cmp)(const void *, const void *);

-FList *_pacman_list_new(void);
+#define _pacman_list_new f_ptrlist_new

int f_list_contains(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data);
int _pacman_list_count(const FList *list);
@@ -66,6 +66,7 @@ typedef struct __pmlist_t FPtrListItem;

FPtrListItem *f_ptrlistitem_new(void *ptr);

+FPtrList *f_ptrlist_new(void);
void f_ptrlist_free(FPtrList *list, FVisitorFunc visitor, void *visitor_data);

void f_ptrlist_clear(FPtrList *list, FVisitorFunc visitor, void *visitor_data);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Plug libftp callback to a private function in preparation of transfer callback changes.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=4f9b8e063fe877aa9d17baf61f4d58d74b5c2b1f

commit 4f9b8e063fe877aa9d17baf61f4d58d74b5c2b1f
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 09:46:11 2013 +0100

libpacman: Plug libftp callback to a private function in preparation of 
transfer callback changes.

diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index 5a874e4..2ac312d 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -142,6 +142,12 @@ int _pacman_downloadfiles(pmlist_t *servers, const char 
*localpath, pmlist_t *fi
}
}

+static
+int _pacman_ftplib_download_cb(netbuf *control, int xfered, void *arg)
+{
+   return pm_dlcb(control, xfered, arg);
+}
+
/*
* This is the real downloadfiles, used directly by sync_synctree() to check
* modtimes on remote files.
@@ -230,7 +236,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
/* set up our progress bar's callback (and idle timeout) */
if(strcmp(server-protocol, file)  control) {
if(pm_dlcb) {
-   FtpOptions(FTPLIB_CALLBACK, 
(long)pm_dlcb, control);
+   FtpOptions(FTPLIB_CALLBACK, 
(long)_pacman_ftplib_download_cb, control);
} else {
_pacman_log(PM_LOG_DEBUG, _(downloadfiles: progress bar's callback is not 
set\n));
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add pacman_downloadstate_end.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8fda2674ac3ec0fc681acf569eb267cda0efb9a9

commit 8fda2674ac3ec0fc681acf569eb267cda0efb9a9
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 12:09:00 2013 +0100

libpacman: Add pacman_downloadstate_end.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 6da6bec..2b4505c 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -46,6 +46,8 @@ pmdb_t: is now public and deprecate PM_DB.

pacman_downloadstate_begin: Access to download start time.

+pacman_downloadstate_end: Access to download end time.
+
pacman_downloadstate_resume: Access to resume download size.

pacman_downloadstate_size: Access to final download size.
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 4f833ec..01baba2 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -419,7 +419,7 @@ pmlist_t *pacman_db_getgrpcache(pmdb_t *db)

/** Get the download start time
* @param downloadstate pointer to the download state to get the informations 
from.
- * @return the size of the file at the start of download resume of the file or 
((off_t) -1) in case of error.
+ * @return return 0 in case of success, !0 otherwise.
*/
int pacman_downloadstate_begin(const pmdownloadstate_t *downloadstate, struct 
timeval *timeval)
{
@@ -430,10 +430,25 @@ int pacman_downloadstate_begin(const pmdownloadstate_t 
*downloadstate, struct ti
return 0;
}

+/** Get the download end time.
+ * Calling this method before pacman_downloadstate_tell give the same value as 
pacman_downloadstate_size
+ * has no meaning and can give any value.
+ * @param downloadstate pointer to the download state to get the informations 
from.
+ * @return return 0 in case of success, !0 otherwise.
+ */
+int pacman_downloadstate_end(const pmdownloadstate_t *downloadstate, struct 
timeval *timeval)
+{
+   ASSERT(downloadstate != NULL, return -1);
+   ASSERT(timeval != NULL, return -1);
+
+   *timeval = downloadstate-dst_end;
+   return 0;
+}
+
/** Get the size at the start of the download resume
* @param downloadstate pointer to the download state to get the informations 
from.
* @param offset pointer to the value to be written.
- * @return return 0 in case of success, not 0 otherwise.
+ * @return return 0 in case of success, !0 otherwise.
*/
int pacman_downloadstate_resume(const pmdownloadstate_t *downloadstate, off_t 
*offset)
{
@@ -447,7 +462,7 @@ int pacman_downloadstate_resume(const pmdownloadstate_t 
*downloadstate, off_t *o
/** Get the final size of the download
* @param downloadstate pointer to the download state to get the informations 
from.
* @param offset pointer to the value to be written.
- * @return return 0 in case of success, not 0 otherwise.
+ * @return return 0 in case of success, !0 otherwise.
*/
int pacman_downloadstate_size(const pmdownloadstate_t *downloadstate, off_t 
*offset)
{
@@ -461,7 +476,7 @@ int pacman_downloadstate_size(const pmdownloadstate_t 
*downloadstate, off_t *off
/** Get the current size of the download
* @param downloadstate pointer to the download state to get the informations 
from.
* @param offset pointer to the value to be written.
- * @return return 0 in case of success, not 0 otherwise.
+ * @return return 0 in case of success, !0 otherwise.
*/
int pacman_downloadstate_tell(const pmdownloadstate_t *downloadstate, off_t 
*offset)
{
@@ -475,7 +490,7 @@ int pacman_downloadstate_tell(const pmdownloadstate_t 
*downloadstate, off_t *off
/** Get the xfered size of the download
* @param downloadstate pointer to the download state to get the informations 
from.
* @param offset pointer to the value to be written.
- * @return return 0 in case of success, not 0 otherwise.
+ * @return return 0 in case of success, !0 otherwise.
*/
int pacman_downloadstate_xfered(const pmdownloadstate_t *downloadstate, off_t 
*offset)
{
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index ed16fe5..bbd5c46 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -173,6 +173,7 @@ pmlist_t *pacman_db_test(pmdb_t *db);
*/

int pacman_downloadstate_begin(const pmdownloadstate_t *downloadstate, struct 
timeval *timeval);
+int pacman_downloadstate_end(const pmdownloadstate_t *downloadstate, struct 
timeval *timeval);
int pacman_downloadstate_resume(const pmdownloadstate_t *downloadstate, off_t 
*offset);
int pacman_downloadstate_size(const pmdownloadstate_t *downloadstate, off_t 
*offset);
int pacman_downloadstate_tell(const pmdownloadstate_t *downloadstate, off_t 
*offset);
diff --git a/lib/libpacman/server.h b/lib/libpacman/server.h
index f56b533..9cf6f19 100644
--- a/lib/libpacman/server.h
+++ b/lib/libpacman/server.h
@@ -46,6 +46,7 @@ typedef struct __pmserver_t {
struct __pmdownloadstate_t {
// FIXME: change int to off_t when the download backend will permit that.
struct timeval dst_begin;
+   struct timeval dst_end;
int dst_resume;
int dst_size;
int dst_tell

[Frugalware-git] pacman-g2: libpacman/pacman: Drop PM_NETBUF structure in favour of pmdownload_state_t.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=4ef9ef61b323b78d89672b27dfffe1961cb56a4a

commit 4ef9ef61b323b78d89672b27dfffe1961cb56a4a
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 11:24:19 2013 +0100

libpacman/pacman: Drop PM_NETBUF structure in favour of pmdownload_state_t.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 5c9e86b..e62aeda 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -28,6 +28,8 @@ pacman_reg_match: Make arguments constants.

pacman_trans_cb_progress: Make 'pkgname' argument a constant.

+pacman_trans_cb_download: Changed the not usable PM_NETBUF *ctl to a const 
pmdownload_state_t *download_states (thougt only one supported for now).
+
 Symbols added:

pmconflict_t: is now public and deprecate PM_CONFLICT.
@@ -48,6 +50,8 @@ PM_PKG_TRIGGERS: Access to package triggers list.

 Symbols removed:

+PM_NETBUF: Remove due to code refactor so public API does not try to hide that 
it use libftp internal callback. See pacman_trans_cb_download changes.
+
PM_TRANS: Unused in the public API.

=== Behaviour changes
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index 0a87a66..80a31ef 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -49,6 +49,7 @@ extern C {
typedef struct __pmconflict_t pmconflict_t;
typedef struct __pmdb_t pmdb_t;
typedef struct __pmdepmissing_t pmdepmissing_t;
+typedef struct __pmdownload_state_t pmdownload_state_t;
typedef struct __pmgrp_t pmgrp_t;
typedef struct __pmlist_t pmlist_t;
typedef struct __pmpkg_t pmpkg_t;
@@ -62,7 +63,7 @@ typedef struct __pmgrp_t PM_GRP;
typedef struct __pmsyncpkg_t PM_SYNCPKG;
typedef struct __pmdepmissing_t PM_DEPMISS;
typedef struct __pmconflict_t PM_CONFLICT;
-typedef struct NetBuf PM_NETBUF;
+typedef struct __pmdownload_state_t PM_NETBUF;

/*
* Library
@@ -349,7 +350,7 @@ typedef void (*pacman_trans_cb_conv)(unsigned char, void *, 
void *, void *, int
typedef void (*pacman_trans_cb_progress)(unsigned char, const char *, int, int, 
int);

/* Download Progress callback */
-typedef int (*pacman_trans_cb_download)(PM_NETBUF *ctl, int xfered, void *arg);
+typedef int (*pacman_trans_cb_download)(const pmdownload_state_t 
*download_states, int xfered, void *arg);

/* Info parameters */
enum {
diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index 2ac312d..c069f67 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -45,6 +45,9 @@
#include util.h
#include handle.h

+struct __pmdownload_state_t {
+};
+
FtpCallback pm_dlcb = NULL;
/* progress bar */
char *pm_dlfnm=NULL;
diff --git a/lib/libpacman/server.h b/lib/libpacman/server.h
index a3bf369..4f7cc03 100644
--- a/lib/libpacman/server.h
+++ b/lib/libpacman/server.h
@@ -43,6 +43,9 @@ typedef struct __pmserver_t {
char *path;
} pmserver_t;

+struct __pmdownload_state_t {
+};
+
pmserver_t *_pacman_server_new(char *url);
void _pacman_server_free(void *data);
int _pacman_downloadfiles(pmlist_t *servers, const char *localpath, pmlist_t 
*files, int skip);
diff --git a/src/pacman-g2/download.c b/src/pacman-g2/download.c
index 763b073..a5646cc 100644
--- a/src/pacman-g2/download.c
+++ b/src/pacman-g2/download.c
@@ -53,7 +53,7 @@ extern config_t *config;
extern unsigned int maxcols;

/* FIXME: log10() want float */
-int log_progress(PM_NETBUF *ctl, int xfered, void *arg)
+int log_progress(pmdownload_state_t *download_state, int xfered, void *arg)
{
int fsz = *(int*)arg;
int pct = ((float)(xfered+offset) / fsz) * 100;
@@ -75,9 +75,6 @@ int log_progress(PM_NETBUF *ctl, int xfered, void *arg)
return 0;
}

-   /* we don't need that parameter */
-   ctl=NULL;
-
if(strcmp(prev_fnm, sync_fnm)  lastpct == 100) {
lastpct = 0;
}
diff --git a/src/pacman-g2/download.h b/src/pacman-g2/download.h
index 12d9321..7ad04fc 100644
--- a/src/pacman-g2/download.h
+++ b/src/pacman-g2/download.h
@@ -30,7 +30,7 @@ extern float rate;
extern int xfered1;
extern unsigned int eta_h, eta_m, eta_s, remain, howmany;

-int log_progress(PM_NETBUF *ctl, int xfered, void *arg);
+int log_progress(pmdownload_state_t *download_state, int xfered, void *arg);

#endif /* _PM_DOWNLOAD_H */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Fix typo thinko.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=4b474bba85af6f229b2c8375d6c8375be62e

commit 4b474bba85af6f229b2c8375d6c8375be62e
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 12:25:35 2013 +0100

libpacman: Fix typo thinko.

diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 42977b7..22f1f66 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -456,7 +456,7 @@ int pacman_downloadstate_eta(const pmdownloadstate_t 
*downloadstate, double *eta
ASSERT(downloadstate != NULL, return -1);
ASSERT(eta != NULL, return -1);

-   *eta = downloadstate-eta;
+   *eta = downloadstate-dst_eta;
}

/** Get the size at the start of the download resume.
@@ -497,7 +497,7 @@ int pacman_downloadstate_tell(const pmdownloadstate_t 
*downloadstate, off_t *off
ASSERT(downloadstate != NULL, return -1);
ASSERT(offset != NULL, return -1);

-   downloadstate-dst_tell;
+   *offset = downloadstate-dst_tell;
return 0;
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Fix a warning.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c5cda930231bb192932172c52004cf43274cd43e

commit c5cda930231bb192932172c52004cf43274cd43e
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 12:25:12 2013 +0100

libpacman: Fix a warning.

diff --git a/lib/libpacman/handle.c b/lib/libpacman/handle.c
index 4fd1922..e8987f7 100644
--- a/lib/libpacman/handle.c
+++ b/lib/libpacman/handle.c
@@ -229,7 +229,7 @@ int _pacman_handle_set_option(pmhandle_t *ph, unsigned char 
val, unsigned long d
pm_logcb = (pacman_cb_log)data;
break;
case PM_OPT_DLCB:
-   pm_dlcb = (FtpCallback)data;
+   pm_dlcb = (pacman_trans_cb_download)data;
break;
case PM_OPT_DLFNM:
pm_dlfnm = (char *)data;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add pmdownload_state_t::dst_size.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=930d805c2ca5c3936c3e8e1ac1ea7cf50408b453

commit 930d805c2ca5c3936c3e8e1ac1ea7cf50408b453
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 11:53:06 2013 +0100

libpacman: Add pmdownload_state_t::dst_size.

diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index 80a31ef..c42cef3 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -63,7 +63,6 @@ typedef struct __pmgrp_t PM_GRP;
typedef struct __pmsyncpkg_t PM_SYNCPKG;
typedef struct __pmdepmissing_t PM_DEPMISS;
typedef struct __pmconflict_t PM_CONFLICT;
-typedef struct __pmdownload_state_t PM_NETBUF;

/*
* Library
diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index c069f67..f43326d 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -45,10 +45,7 @@
#include util.h
#include handle.h

-struct __pmdownload_state_t {
-};
-
-FtpCallback pm_dlcb = NULL;
+pacman_trans_cb_download pm_dlcb = NULL;
/* progress bar */
char *pm_dlfnm=NULL;
int *pm_dloffset=NULL;
@@ -148,7 +145,9 @@ int _pacman_downloadfiles(pmlist_t *servers, const char 
*localpath, pmlist_t *fi
static
int _pacman_ftplib_download_cb(netbuf *control, int xfered, void *arg)
{
-   return pm_dlcb(control, xfered, arg);
+   pmdownload_state_t *download_state = arg;
+
+   return pm_dlcb(download_state, xfered, download_state-dst_size);
}

/*
@@ -167,7 +166,7 @@ int _pacman_ftplib_download_cb(netbuf *control, int xfered, 
void *arg)
int _pacman_downloadfiles_forreal(pmlist_t *servers, const char *localpath,
pmlist_t *files, const time_t *mtime1, time_t *mtime2, int skip)
{
-   int fsz;
+   pmdownload_state_t download_state = { 0 };
netbuf *control = NULL;
pmlist_t *lp;
int done = 0;
@@ -244,7 +243,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
_pacman_log(PM_LOG_DEBUG, _(downloadfiles: progress bar's callback is not 
set\n));
}
FtpOptions(FTPLIB_IDLETIME, (long)1000, control);
-   FtpOptions(FTPLIB_CALLBACKARG, (long)fsz, 
control);
+   FtpOptions(FTPLIB_CALLBACKARG, 
(long)download_state, control);
FtpOptions(FTPLIB_CALLBACKBYTES, (10*1024), control);
FtpOptions(FTPLIB_LOSTTIME, (long)5, control);
}
@@ -391,7 +390,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
}

if(!strcmp(server-protocol, ftp)  !handle-proxyhost) {
-   if(!FtpSize(fn, fsz, FTPLIB_IMAGE, 
control)) {
+   if(!FtpSize(fn, 
download_state.dst_size, FTPLIB_IMAGE, control)) {
_pacman_log(PM_LOG_WARNING, _(failed to get filesize for %s\n), fn);
}
/* check mtimes */
@@ -478,7 +477,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
_pacman_log(PM_LOG_DEBUG, _(downloadfiles: progress bar's callback is not 
set\n));
}
FtpOptions(FTPLIB_IDLETIME, (long)1000, control);
-   
FtpOptions(FTPLIB_CALLBACKARG, (long)fsz, control);
+   
FtpOptions(FTPLIB_CALLBACKARG, (long)download_state, control);
FtpOptions(FTPLIB_CALLBACKBYTES, (10*1024), control);
FtpOptions(FTPLIB_LOSTTIME, (long)5, control);
}
@@ -497,7 +496,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
if(mtime1  *mtime1 != PM_TIME_INVALID) {
fmtime1 = *gmtime(mtime1);
}
-   if(!HttpGet(server-server, output, 
src, fsz, control, (pm_dloffset ? *pm_dloffset:0),
+   if(!HttpGet(server-server, output, 
src, download_state.dst_size, control, (pm_dloffset ? *pm_dloffset:0),
(mtime1) ? fmtime1 : NULL, (mtime2) ? fmtime2 : NULL)) {
if(strstr(FtpLastResponse(control), 304)) {
_pacman_log(PM_LOG_DEBUG, _(mtimes are identical, skipping %s\n), fn);
@@ -539,7 +538,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
if(!strcmp(server-protocol, file)) {
EVENT(handle-trans, PM_TRANS_EVT_RETRIEVE_LOCAL, pm_dlfnm, server-path);
} else if(pm_dlcb) {
-   pm_dlcb(control, 
fsz-*pm_dloffset, fsz);
+   pm_dlcb(download_state, 
download_state.dst_size-*pm_dloffset, download_state.dst_size);
}
complete = _pacman_list_add(complete, fn);
/* rename output.part file to output file */
diff --git a/lib/libpacman/server.h b/lib/libpacman/server.h
index 4f7cc03..fc3676a 100644
--- a/lib/libpacman/server.h
+++ b/lib/libpacman/server.h
@@ -44,6 +44,8 @@ typedef struct __pmserver_t {
} pmserver_t;

struct __pmdownload_state_t {
+   // FIXME: change int to off_t when the download backend will permit 
that.
+   int dst_size;
};

pmserver_t *_pacman_server_new(char *url);
@@ -54,7 +56,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,

char *_pacman_fetch_pkgurl(char *target

[Frugalware-git] pacman-g2: libpacman: Add pacman_downloadstate_tell and pacman_downloadstate_xfered, remove pacman_trans_cb_download 'xfered' argument.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=ec72af45d43df6e480339d9160fa9c7afefc5224

commit ec72af45d43df6e480339d9160fa9c7afefc5224
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 17:55:12 2013 +0100

libpacman: Add pacman_downloadstate_tell and pacman_downloadstate_xfered, 
remove pacman_trans_cb_download 'xfered' argument.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 218890b..99ddc6e 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -32,6 +32,8 @@ pacman_trans_cb_download:

* Changed the not usable PM_NETBUF *ctl to a const pmdownloadstate_t 
*downloadstates (thougt only one supported for now).

+* Removed the 'xfered' parameter in favor of pacman_downloadstate_xfered.
+
* Removed the old abused 'arg' parameter.

pacman_trans_cb_progress: Make 'pkgname' argument a constant.
@@ -42,7 +44,13 @@ pmconflict_t: is now public and deprecate PM_CONFLICT.

pmdb_t: is now public and deprecate PM_DB.

-pacman_downloadstate_size: Access to a download final size.
+pacman_downloadstate_resume: Access to resume download size.
+
+pacman_downloadstate_size: Access to final download size.
+
+pacman_downloadstate_tell: Access to current download size.
+
+pacman_downloadstate_xfered: Access to a xfered download size.

pmdepmissing_t: is now public and deprecate PM_DEPMISS.

diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index f6838aa..1ee8327 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -439,6 +439,28 @@ off_t pacman_downloadstate_size(const pmdownloadstate_t 
*downloadstate)
return downloadstate-dst_size;
}

+/** Get the current size of the download
+ * @param downloadstate pointer to the download state to get the informations 
from.
+ * @return the current size of the file or ((off_t) -1) in case of error.
+ */
+off_t pacman_downloadstate_tell(const pmdownloadstate_t *downloadstate)
+{
+   ASSERT(downloadstate != NULL, return((off_t) -1));
+
+   return downloadstate-dst_tell;
+}
+
+/** Get the xfered size of the download
+ * @param downloadstate pointer to the download state to get the informations 
from.
+ * @return the xfered size of the file or ((off_t) -1) in case of error.
+ */
+off_t pacman_downloadstate_xfered(const pmdownloadstate_t *downloadstate)
+{
+   ASSERT(downloadstate != NULL, return((off_t) -1));
+
+   return downloadstate-dst_tell - downloadstate-dst_resume;
+}
+
/** @} */

/** @defgroup pacman_packages Package Functions
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index aac0d46..17dd85b 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -175,6 +175,8 @@ pmlist_t *pacman_db_test(pmdb_t *db);

off_t pacman_downloadstate_resume(const pmdownloadstate_t *downloadstate);
off_t pacman_downloadstate_size(const pmdownloadstate_t *downloadstate);
+off_t pacman_downloadstate_tell(const pmdownloadstate_t *downloadstate);
+off_t pacman_downloadstate_xfered(const pmdownloadstate_t *downloadstate);

/*
* Packages
@@ -357,7 +359,7 @@ typedef void (*pacman_trans_cb_conv)(unsigned char, void *, 
void *, void *, int
typedef void (*pacman_trans_cb_progress)(unsigned char, const char *, int, int, 
int);

/* Download Progress callback */
-typedef int (*pacman_trans_cb_download)(const pmdownloadstate_t 
*downloadstates, int xfered);
+typedef int (*pacman_trans_cb_download)(const pmdownloadstate_t 
*downloadstates);

/* Info parameters */
enum {
diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index f85b35a..cdfe5f4 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -146,7 +146,8 @@ int _pacman_ftplib_download_cb(netbuf *control, int xfered, 
void *arg)
{
pmdownloadstate_t *downloadstate = arg;

-   return pm_dlcb(downloadstate, xfered);
+   downloadstate-dst_tell = downloadstate-dst_resume + xfered;
+   return pm_dlcb(downloadstate);
}

/*
@@ -531,7 +532,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
if(!strcmp(server-protocol, file)) {
EVENT(handle-trans, PM_TRANS_EVT_RETRIEVE_LOCAL, pm_dlfnm, server-path);
} else if(pm_dlcb) {
-   pm_dlcb(downloadstate, 
downloadstate.dst_size - downloadstate.dst_resume);
+   pm_dlcb(downloadstate);
}
complete = _pacman_list_add(complete, fn);
/* rename output.part file to output file */
diff --git a/lib/libpacman/server.h b/lib/libpacman/server.h
index d461db5..188f303 100644
--- a/lib/libpacman/server.h
+++ b/lib/libpacman/server.h
@@ -47,6 +47,7 @@ struct __pmdownloadstate_t {
// FIXME: change int to off_t when the download backend will permit that.
int dst_resume;
int dst_size;
+   int dst_tell;
};

pmserver_t *_pacman_server_new(char *url);
diff --git a/src/pacman-g2/download.c b/src/pacman-g2/download.c
index 79f058f..d88f08d 100644
--- a/src/pacman-g2/download.c
+++ b/src/pacman-g2/download.c
@@ -52,10 +52,11 @@ extern

[Frugalware-git] pacman-g2: libpacman: s/download_state/downloadstate/.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a0d6d9335f39d1aab09cba7db3a7d168a1a6deb7

commit a0d6d9335f39d1aab09cba7db3a7d168a1a6deb7
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 12:19:54 2013 +0100

libpacman: s/download_state/downloadstate/.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index ce9ade6..63d987b 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -28,7 +28,7 @@ pacman_reg_match: Make arguments constants.

pacman_trans_cb_progress: Make 'pkgname' argument a constant.

-pacman_trans_cb_download: Changed the not usable PM_NETBUF *ctl to a const 
pmdownload_state_t *download_states (thougt only one supported for now).
+pacman_trans_cb_download: Changed the not usable PM_NETBUF *ctl to a const 
pmdownloadstate_t *downloadstates (thougt only one supported for now).

 Symbols added:

@@ -36,7 +36,7 @@ pmconflict_t: is now public and deprecate PM_CONFLICT.

pmdb_t: is now public and deprecate PM_DB.

-pacman_download_state_size: Access to a download final size.
+pacman_downloadstate_size: Access to a download final size.

pmdepmissing_t: is now public and deprecate PM_DEPMISS.

diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 5ac14fb..289246d 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -412,20 +412,20 @@ pmlist_t *pacman_db_getgrpcache(pmdb_t *db)

/** @} */

-/** @defgroup pacman_download_state Download States Functions
+/** @defgroup pacman_downloadstate Download States Functions
* @brief Functions to informations from libpacman downloads
* @{
*/

/** Get the final size of the download
- * @param download_state pointer to the download state to get the informations 
from.
+ * @param downloadstate pointer to the download state to get the informations 
from.
* @return the size of the file or ((off_t) -1) in case of error.
*/
-off_t pacman_download_state_size(const pmdownload_state_t *download_state)
+off_t pacman_downloadstate_size(const pmdownloadstate_t *downloadstate)
{
-   ASSERT(download_state != NULL, return((off_t) -1));
+   ASSERT(downloadstate != NULL, return((off_t) -1));

-   return download_state-dst_size;
+   return downloadstate-dst_size;
}

/** @} */
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index 5c65bf5..5dba69a 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -51,7 +51,7 @@ extern C {
typedef struct __pmconflict_t pmconflict_t;
typedef struct __pmdb_t pmdb_t;
typedef struct __pmdepmissing_t pmdepmissing_t;
-typedef struct __pmdownload_state_t pmdownload_state_t;
+typedef struct __pmdownloadstate_t pmdownloadstate_t;
typedef struct __pmgrp_t pmgrp_t;
typedef struct __pmlist_t pmlist_t;
typedef struct __pmpkg_t pmpkg_t;
@@ -174,7 +174,7 @@ pmlist_t *pacman_db_test(pmdb_t *db);
* Download states
*/

-off_t pacman_download_state_size(const pmdownload_state_t *download_state);
+off_t pacman_downloadstate_size(const pmdownloadstate_t *downloadstate);

/*
* Packages
@@ -357,7 +357,7 @@ typedef void (*pacman_trans_cb_conv)(unsigned char, void *, 
void *, void *, int
typedef void (*pacman_trans_cb_progress)(unsigned char, const char *, int, int, 
int);

/* Download Progress callback */
-typedef int (*pacman_trans_cb_download)(const pmdownload_state_t 
*download_states, int xfered, void *arg);
+typedef int (*pacman_trans_cb_download)(const pmdownloadstate_t 
*downloadstates, int xfered, void *arg);

/* Info parameters */
enum {
diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index f43326d..1c11321 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -145,9 +145,9 @@ int _pacman_downloadfiles(pmlist_t *servers, const char 
*localpath, pmlist_t *fi
static
int _pacman_ftplib_download_cb(netbuf *control, int xfered, void *arg)
{
-   pmdownload_state_t *download_state = arg;
+   pmdownloadstate_t *downloadstate = arg;

-   return pm_dlcb(download_state, xfered, download_state-dst_size);
+   return pm_dlcb(downloadstate, xfered, downloadstate-dst_size);
}

/*
@@ -166,7 +166,7 @@ int _pacman_ftplib_download_cb(netbuf *control, int xfered, 
void *arg)
int _pacman_downloadfiles_forreal(pmlist_t *servers, const char *localpath,
pmlist_t *files, const time_t *mtime1, time_t *mtime2, int skip)
{
-   pmdownload_state_t download_state = { 0 };
+   pmdownloadstate_t downloadstate = { 0 };
netbuf *control = NULL;
pmlist_t *lp;
int done = 0;
@@ -243,7 +243,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
_pacman_log(PM_LOG_DEBUG, _(downloadfiles: progress bar's callback is not 
set\n));
}
FtpOptions(FTPLIB_IDLETIME, (long)1000, control);
-   FtpOptions(FTPLIB_CALLBACKARG, 
(long)download_state, control);
+   FtpOptions(FTPLIB_CALLBACKARG, 
(long)downloadstate, control);
FtpOptions(FTPLIB_CALLBACKBYTES, (10*1024), control);
FtpOptions(FTPLIB_LOSTTIME, (long)5, control

[Frugalware-git] pacman-g2: libpacman: Fix warnings (indirection typo).

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=476635fb9ec99d7299f59c5808c692f4619e9b0e

commit 476635fb9ec99d7299f59c5808c692f4619e9b0e
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 17:36:10 2013 +0100

libpacman: Fix warnings (indirection typo).

diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index a200466..f85b35a 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -418,7 +418,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
if(!filedone) {
if(!stat(output, st)) {
downloadstate.dst_resume = st.st_size;
-   
if(!FtpRestart(downloadstate.dst_resume, control)) {
+   
if(!FtpRestart(downloadstate.dst_resume, control)) {
_pacman_log(PM_LOG_WARNING, _(failed to resume download -- restarting\n));
/* can't resume: */
/* unlink the file in order to restart download from scratch */
@@ -489,7 +489,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
if(mtime1  *mtime1 != PM_TIME_INVALID) {
fmtime1 = *gmtime(mtime1);
}
-   if(!HttpGet(server-server, output, 
src, downloadstate.dst_size, control, downloadstate.dst_resume,
+   if(!HttpGet(server-server, output, 
src, downloadstate.dst_size, control, downloadstate.dst_resume,
(mtime1) ? fmtime1 : NULL, (mtime2) ? fmtime2 : NULL)) {
if(strstr(FtpLastResponse(control), 304)) {
_pacman_log(PM_LOG_DEBUG, _(mtimes are identical, skipping %s\n), fn);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add pacman_download_state_size to the public API.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=fdc80b3e7db96b9e1be3afcf8d4c19c89ac1a04d

commit fdc80b3e7db96b9e1be3afcf8d4c19c89ac1a04d
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 12:11:40 2013 +0100

libpacman: Add pacman_download_state_size to the public API.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index e62aeda..ce9ade6 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -36,6 +36,8 @@ pmconflict_t: is now public and deprecate PM_CONFLICT.

pmdb_t: is now public and deprecate PM_DB.

+pacman_download_state_size: Access to a download final size.
+
pmdepmissing_t: is now public and deprecate PM_DEPMISS.

pmgrp_t: is now public and deprecate PM_GRP.
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 4a4a232..5ac14fb 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -412,6 +412,24 @@ pmlist_t *pacman_db_getgrpcache(pmdb_t *db)

/** @} */

+/** @defgroup pacman_download_state Download States Functions
+ * @brief Functions to informations from libpacman downloads
+ * @{
+ */
+
+/** Get the final size of the download
+ * @param download_state pointer to the download state to get the informations 
from.
+ * @return the size of the file or ((off_t) -1) in case of error.
+ */
+off_t pacman_download_state_size(const pmdownload_state_t *download_state)
+{
+   ASSERT(download_state != NULL, return((off_t) -1));
+
+   return download_state-dst_size;
+}
+
+/** @} */
+
/** @defgroup pacman_packages Package Functions
* @brief Functions to manipulate libpacman packages
* @{
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index c42cef3..5c65bf5 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -24,6 +24,8 @@
#ifndef _PACMAN_H
#define _PACMAN_H

+#include sys/types.h // off_t
+
#ifdef __cplusplus
extern C {
#endif
@@ -169,6 +171,12 @@ pmlist_t *pacman_db_search(pmdb_t *db);
pmlist_t *pacman_db_test(pmdb_t *db);

/*
+ * Download states
+ */
+
+off_t pacman_download_state_size(const pmdownload_state_t *download_state);
+
+/*
* Packages
*/

diff --git a/src/pacman-g2/download.c b/src/pacman-g2/download.c
index a5646cc..35ead4d 100644
--- a/src/pacman-g2/download.c
+++ b/src/pacman-g2/download.c
@@ -53,9 +53,9 @@ extern config_t *config;
extern unsigned int maxcols;

/* FIXME: log10() want float */
-int log_progress(pmdownload_state_t *download_state, int xfered, void *arg)
+int log_progress(const pmdownload_state_t *download_state, int xfered, void 
*arg)
{
-   int fsz = *(int*)arg;
+   int fsz = pacman_download_state_size(download_state);
int pct = ((float)(xfered+offset) / fsz) * 100;
static int lastpct=0;
unsigned int i, cur;
diff --git a/src/pacman-g2/download.h b/src/pacman-g2/download.h
index 7ad04fc..151a2bf 100644
--- a/src/pacman-g2/download.h
+++ b/src/pacman-g2/download.h
@@ -30,7 +30,7 @@ extern float rate;
extern int xfered1;
extern unsigned int eta_h, eta_m, eta_s, remain, howmany;

-int log_progress(pmdownload_state_t *download_state, int xfered, void *arg);
+int log_progress(const pmdownload_state_t *download_state, int xfered, void 
*arg);

#endif /* _PM_DOWNLOAD_H */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Change pacman_downloadstate_* to output values by pointer arguments.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=deb822985dc586c72a975fa74ddb415925572da6

commit deb822985dc586c72a975fa74ddb415925572da6
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 11:56:18 2013 +0100

libpacman: Change pacman_downloadstate_* to output values by pointer arguments.

diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 7b3fb1c..4f833ec 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -432,46 +432,58 @@ int pacman_downloadstate_begin(const pmdownloadstate_t 
*downloadstate, struct ti

/** Get the size at the start of the download resume
* @param downloadstate pointer to the download state to get the informations 
from.
- * @return the size of the file at the start of download resume of the file or 
((off_t) -1) in case of error.
+ * @param offset pointer to the value to be written.
+ * @return return 0 in case of success, not 0 otherwise.
*/
-off_t pacman_downloadstate_resume(const pmdownloadstate_t *downloadstate)
+int pacman_downloadstate_resume(const pmdownloadstate_t *downloadstate, off_t 
*offset)
{
-   ASSERT(downloadstate != NULL, return((off_t) -1));
+   ASSERT(downloadstate != NULL, return -1);
+   ASSERT(offset != NULL, return -1);

-   return downloadstate-dst_resume;
+   *offset = downloadstate-dst_resume;
+   return 0;
}

/** Get the final size of the download
* @param downloadstate pointer to the download state to get the informations 
from.
- * @return the size of the file or ((off_t) -1) in case of error.
+ * @param offset pointer to the value to be written.
+ * @return return 0 in case of success, not 0 otherwise.
*/
-off_t pacman_downloadstate_size(const pmdownloadstate_t *downloadstate)
+int pacman_downloadstate_size(const pmdownloadstate_t *downloadstate, off_t 
*offset)
{
-   ASSERT(downloadstate != NULL, return((off_t) -1));
+   ASSERT(downloadstate != NULL, return -1);
+   ASSERT(offset != NULL, return -1);

-   return downloadstate-dst_size;
+   *offset = downloadstate-dst_size;
+   return 0;
}

/** Get the current size of the download
* @param downloadstate pointer to the download state to get the informations 
from.
- * @return the current size of the file or ((off_t) -1) in case of error.
+ * @param offset pointer to the value to be written.
+ * @return return 0 in case of success, not 0 otherwise.
*/
-off_t pacman_downloadstate_tell(const pmdownloadstate_t *downloadstate)
+int pacman_downloadstate_tell(const pmdownloadstate_t *downloadstate, off_t 
*offset)
{
-   ASSERT(downloadstate != NULL, return((off_t) -1));
+   ASSERT(downloadstate != NULL, return -1);
+   ASSERT(offset != NULL, return -1);

-   return downloadstate-dst_tell;
+   downloadstate-dst_tell;
+   return 0;
}

/** Get the xfered size of the download
* @param downloadstate pointer to the download state to get the informations 
from.
- * @return the xfered size of the file or ((off_t) -1) in case of error.
+ * @param offset pointer to the value to be written.
+ * @return return 0 in case of success, not 0 otherwise.
*/
-off_t pacman_downloadstate_xfered(const pmdownloadstate_t *downloadstate)
+int pacman_downloadstate_xfered(const pmdownloadstate_t *downloadstate, off_t 
*offset)
{
-   ASSERT(downloadstate != NULL, return((off_t) -1));
+   ASSERT(downloadstate != NULL, return -1);
+   ASSERT(offset != NULL, return -1);

-   return downloadstate-dst_tell - downloadstate-dst_resume;
+   *offset = downloadstate-dst_tell - downloadstate-dst_resume;
+   return 0;
}

/** @} */
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index 6e01375..ed16fe5 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -173,10 +173,10 @@ pmlist_t *pacman_db_test(pmdb_t *db);
*/

int pacman_downloadstate_begin(const pmdownloadstate_t *downloadstate, struct 
timeval *timeval);
-off_t pacman_downloadstate_resume(const pmdownloadstate_t *downloadstate);
-off_t pacman_downloadstate_size(const pmdownloadstate_t *downloadstate);
-off_t pacman_downloadstate_tell(const pmdownloadstate_t *downloadstate);
-off_t pacman_downloadstate_xfered(const pmdownloadstate_t *downloadstate);
+int pacman_downloadstate_resume(const pmdownloadstate_t *downloadstate, off_t 
*offset);
+int pacman_downloadstate_size(const pmdownloadstate_t *downloadstate, off_t 
*offset);
+int pacman_downloadstate_tell(const pmdownloadstate_t *downloadstate, off_t 
*offset);
+int pacman_downloadstate_xfered(const pmdownloadstate_t *downloadstate, off_t 
*offset);

/*
* Packages
diff --git a/src/pacman-g2/download.c b/src/pacman-g2/download.c
index b78cd9f..b595b4d 100644
--- a/src/pacman-g2/download.c
+++ b/src/pacman-g2/download.c
@@ -54,10 +54,8 @@ extern unsigned int maxcols;
/* FIXME: log10() want float */
int log_progress(const pmdownloadstate_t *downloadstate)
{
-   int offset = pacman_downloadstate_resume(downloadstate);
-   int fsz

[Frugalware-git] pacman-g2: libpacman: Remove some warnings.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b0aa20a335c3f7e540f35a17b725cd546a92993f

commit b0aa20a335c3f7e540f35a17b725cd546a92993f
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 14:03:54 2013 +0100

libpacman: Remove some warnings.

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index 61e9cf8..e96ec4e 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -178,8 +178,6 @@ pmlist_t *_pacman_db_test(pmdb_t *db)

int _pacman_db_open(pmdb_t *db, int flags)
{
-   int ret = 0;
-
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
ASSERT(flags == 0, RET_ERR(PM_ERR_DB_OPEN, -1)); /* No flags are supported for 
now */

diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 22f1f66..c6212af 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -457,6 +457,7 @@ int pacman_downloadstate_eta(const pmdownloadstate_t 
*downloadstate, double *eta
ASSERT(eta != NULL, return -1);

*eta = downloadstate-dst_eta;
+   return 0;
}

/** Get the size at the start of the download resume.
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: doc: Forgot to document PM_OPT_DLT0 removal.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=839c4c8337125cf9e47bf2f1332286c01d277757

commit 839c4c8337125cf9e47bf2f1332286c01d277757
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 11:44:20 2013 +0100

doc: Forgot to document PM_OPT_DLT0 removal.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index d6ac707..6da6bec 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -68,7 +68,7 @@ PM_PKG_TRIGGERS: Access to package triggers list.

 Symbols removed:

-PM_NETBUF, PM_OPT_DLOFFSET: Remove due to code refactor so public API does not 
try to hide that it use libftp internal callback. See pacman_trans_cb_download 
changes.
+PM_NETBUF, PM_OPT_DLOFFSET, PM_OPT_DLT0: Remove due to code refactor so public 
API does not try to hide that it use libftp internal callback. See 
pacman_trans_cb_download changes.

PM_TRANS: Unused in the public API.
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add _pacman_difftimeval.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=7bc771626eded3ffa4fded610277d5ba5ffb2782

commit 7bc771626eded3ffa4fded610277d5ba5ffb2782
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 13:24:54 2013 +0100

libpacman: Add _pacman_difftimeval.

diff --git a/lib/libpacman/util/time.c b/lib/libpacman/util/time.c
index bd51514..77f4b05 100644
--- a/lib/libpacman/util/time.c
+++ b/lib/libpacman/util/time.c
@@ -46,6 +46,12 @@ locale_t _pacman_locale_c(void)
return locale_c;
}

+double _pacman_difftimeval(struct timeval timeval1, struct timeval timeval2)
+{
+   return difftime(timeval1.tv_sec , timeval2.tv_sec) +
+   ((double)(timeval1.tv_usec - timeval2.tv_usec) / 100);
+}
+
struct tm *_pacman_localtime(const time_t *timep)
{
time_t now;
diff --git a/lib/libpacman/util/time.h b/lib/libpacman/util/time.h
index 51c0b55..4651def 100644
--- a/lib/libpacman/util/time.h
+++ b/lib/libpacman/util/time.h
@@ -25,6 +25,8 @@

#define PM_TIME_INVALID ((time_t) -1)

+double _pacman_difftimeval(struct timeval timeval1, struct timeval timeval2);
+
/* Return the localtime for timep. If timep is NULL, return the conversion for 
time(NULL) (libc returns NULL instead).
*/
struct tm *_pacman_localtime(const time_t *timep);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add pacman_downloadstate_eta.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c6a55388b4eaef89e4e63b6d289ae978359a7725

commit c6a55388b4eaef89e4e63b6d289ae978359a7725
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 12:21:05 2013 +0100

libpacman: Add pacman_downloadstate_eta.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 2b4505c..5496ac2 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -48,6 +48,8 @@ pacman_downloadstate_begin: Access to download start time.

pacman_downloadstate_end: Access to download end time.

+pacman_downloadstate_eta: Access to download eta time.
+
pacman_downloadstate_resume: Access to resume download size.

pacman_downloadstate_size: Access to final download size.
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 01baba2..42977b7 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -434,6 +434,7 @@ int pacman_downloadstate_begin(const pmdownloadstate_t 
*downloadstate, struct ti
* Calling this method before pacman_downloadstate_tell give the same value as 
pacman_downloadstate_size
* has no meaning and can give any value.
* @param downloadstate pointer to the download state to get the informations 
from.
+ * @param offset pointer to the value to be written.
* @return return 0 in case of success, !0 otherwise.
*/
int pacman_downloadstate_end(const pmdownloadstate_t *downloadstate, struct 
timeval *timeval)
@@ -445,7 +446,20 @@ int pacman_downloadstate_end(const pmdownloadstate_t 
*downloadstate, struct time
return 0;
}

-/** Get the size at the start of the download resume
+/** Get the estimate time to arrival of the download (in seconds).
+ * @param downloadstate pointer to the download state to get the informations 
from.
+ * @param offset pointer to the value to be written.
+ * @return return 0 in case of success, !0 otherwise.
+ */
+int pacman_downloadstate_eta(const pmdownloadstate_t *downloadstate, double 
*eta)
+{
+   ASSERT(downloadstate != NULL, return -1);
+   ASSERT(eta != NULL, return -1);
+
+   *eta = downloadstate-eta;
+}
+
+/** Get the size at the start of the download resume.
* @param downloadstate pointer to the download state to get the informations 
from.
* @param offset pointer to the value to be written.
* @return return 0 in case of success, !0 otherwise.
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index bbd5c46..7702fd4 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -174,6 +174,7 @@ pmlist_t *pacman_db_test(pmdb_t *db);

int pacman_downloadstate_begin(const pmdownloadstate_t *downloadstate, struct 
timeval *timeval);
int pacman_downloadstate_end(const pmdownloadstate_t *downloadstate, struct 
timeval *timeval);
+int pacman_downloadstate_eta(const pmdownloadstate_t *downloadstate, double 
*eta);
int pacman_downloadstate_resume(const pmdownloadstate_t *downloadstate, off_t 
*offset);
int pacman_downloadstate_size(const pmdownloadstate_t *downloadstate, off_t 
*offset);
int pacman_downloadstate_tell(const pmdownloadstate_t *downloadstate, off_t 
*offset);
diff --git a/lib/libpacman/server.h b/lib/libpacman/server.h
index 9cf6f19..c862929 100644
--- a/lib/libpacman/server.h
+++ b/lib/libpacman/server.h
@@ -47,6 +47,7 @@ struct __pmdownloadstate_t {
// FIXME: change int to off_t when the download backend will permit that.
struct timeval dst_begin;
struct timeval dst_end;
+   double dst_eta;
int dst_resume;
int dst_size;
int dst_tell;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove the old abused pacman_trans_cb_download 'arg' argument.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9e2b7b2f9f968ef2ea7fa1dc05746ded40c7f2be

commit 9e2b7b2f9f968ef2ea7fa1dc05746ded40c7f2be
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 12:29:10 2013 +0100

libpacman: Remove the old abused pacman_trans_cb_download 'arg' argument.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 63d987b..6277825 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -26,9 +26,13 @@ pacman_parse_config: Make 'file' argument a constant. Remove 
'this_section' argu

pacman_reg_match: Make arguments constants.

-pacman_trans_cb_progress: Make 'pkgname' argument a constant.
+pacman_trans_cb_download:
+
+* Changed the not usable PM_NETBUF *ctl to a const pmdownloadstate_t 
*downloadstates (thougt only one supported for now).

-pacman_trans_cb_download: Changed the not usable PM_NETBUF *ctl to a const 
pmdownloadstate_t *downloadstates (thougt only one supported for now).
+* Removed the old abused 'arg' parameter.
+
+pacman_trans_cb_progress: Make 'pkgname' argument a constant.

 Symbols added:

diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index 5dba69a..ac133e0 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -357,7 +357,7 @@ typedef void (*pacman_trans_cb_conv)(unsigned char, void *, 
void *, void *, int
typedef void (*pacman_trans_cb_progress)(unsigned char, const char *, int, int, 
int);

/* Download Progress callback */
-typedef int (*pacman_trans_cb_download)(const pmdownloadstate_t 
*downloadstates, int xfered, void *arg);
+typedef int (*pacman_trans_cb_download)(const pmdownloadstate_t 
*downloadstates, int xfered);

/* Info parameters */
enum {
diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index 1c11321..f5d942a 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -147,7 +147,7 @@ int _pacman_ftplib_download_cb(netbuf *control, int xfered, 
void *arg)
{
pmdownloadstate_t *downloadstate = arg;

-   return pm_dlcb(downloadstate, xfered, downloadstate-dst_size);
+   return pm_dlcb(downloadstate, xfered);
}

/*
@@ -538,7 +538,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
if(!strcmp(server-protocol, file)) {
EVENT(handle-trans, PM_TRANS_EVT_RETRIEVE_LOCAL, pm_dlfnm, server-path);
} else if(pm_dlcb) {
-   pm_dlcb(downloadstate, 
downloadstate.dst_size-*pm_dloffset, downloadstate.dst_size);
+   pm_dlcb(downloadstate, 
downloadstate.dst_size-*pm_dloffset);
}
complete = _pacman_list_add(complete, fn);
/* rename output.part file to output file */
diff --git a/src/pacman-g2/download.c b/src/pacman-g2/download.c
index ca6d9a4..c57e223 100644
--- a/src/pacman-g2/download.c
+++ b/src/pacman-g2/download.c
@@ -53,7 +53,7 @@ extern config_t *config;
extern unsigned int maxcols;

/* FIXME: log10() want float */
-int log_progress(const pmdownloadstate_t *downloadstate, int xfered, void *arg)
+int log_progress(const pmdownloadstate_t *downloadstate, int xfered)
{
int fsz = pacman_downloadstate_size(downloadstate);
int pct = ((float)(xfered+offset) / fsz) * 100;
diff --git a/src/pacman-g2/download.h b/src/pacman-g2/download.h
index 81f4691..b85a14c 100644
--- a/src/pacman-g2/download.h
+++ b/src/pacman-g2/download.h
@@ -30,7 +30,7 @@ extern float rate;
extern int xfered1;
extern unsigned int eta_h, eta_m, eta_s, remain, howmany;

-int log_progress(const pmdownloadstate_t *downloadstate, int xfered, void 
*arg);
+int log_progress(const pmdownloadstate_t *downloadstate, int xfered);

#endif /* _PM_DOWNLOAD_H */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman Add pacman_downloadstate_resume and remove PM_OPT_DLOFFSET.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9b2af5f223283e037a9ee1279d9fa1d28e795987

commit 9b2af5f223283e037a9ee1279d9fa1d28e795987
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 13:28:53 2013 +0100

libpacman Add pacman_downloadstate_resume and remove PM_OPT_DLOFFSET.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 6277825..218890b 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -20,6 +20,8 @@ None.

pacman_cb_log: Make 'message' argument a constant.

+pacman_downloadstate_resume, pacman_downloadstate_size: Access to the various 
pmdownloadstate_t data.
+
pacman_logaction: Now returns a void instead of a int to reflect success. 
Logging should allways success and not be intrusive.

pacman_parse_config: Make 'file' argument a constant. Remove 'this_section' 
argument, it is internal and should not have been exposed publicly.
@@ -56,7 +58,7 @@ PM_PKG_TRIGGERS: Access to package triggers list.

 Symbols removed:

-PM_NETBUF: Remove due to code refactor so public API does not try to hide that 
it use libftp internal callback. See pacman_trans_cb_download changes.
+PM_NETBUF, PM_OPT_DLOFFSET: Remove due to code refactor so public API does not 
try to hide that it use libftp internal callback. See pacman_trans_cb_download 
changes.

PM_TRANS: Unused in the public API.

diff --git a/lib/libpacman/handle.c b/lib/libpacman/handle.c
index e8987f7..49ff507 100644
--- a/lib/libpacman/handle.c
+++ b/lib/libpacman/handle.c
@@ -234,9 +234,6 @@ int _pacman_handle_set_option(pmhandle_t *ph, unsigned char 
val, unsigned long d
case PM_OPT_DLFNM:
pm_dlfnm = (char *)data;
break;
-   case PM_OPT_DLOFFSET:
-   pm_dloffset = (int *)data;
-   break;
case PM_OPT_DLT0:
pm_dlt0 = (struct timeval *)data;
break;
@@ -352,7 +349,6 @@ int _pacman_handle_get_option(pmhandle_t *ph, unsigned char 
val, long *data)
case PM_OPT_OLDDELAY:  *data = (long)ph-olddelay; break;
case PM_OPT_LOGMASK:   *data = pm_logmask; break;
case PM_OPT_DLFNM: *data = (long)pm_dlfnm; break;
-   case PM_OPT_DLOFFSET:  *data = (long)pm_dloffset; break;
case PM_OPT_DLT0:  *data = (long)pm_dlt0; break;
case PM_OPT_DLT:   *data = (long)pm_dlt; break;
case PM_OPT_DLRATE:*data = (long)pm_dlrate; break;
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 289246d..f6838aa 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -417,6 +417,17 @@ pmlist_t *pacman_db_getgrpcache(pmdb_t *db)
* @{
*/

+/** Get the size at the start of the download resume
+ * @param downloadstate pointer to the download state to get the informations 
from.
+ * @return the size of the file at the start of download resume of the file or 
((off_t) -1) in case of error.
+ */
+off_t pacman_downloadstate_resume(const pmdownloadstate_t *downloadstate)
+{
+   ASSERT(downloadstate != NULL, return((off_t) -1));
+
+   return downloadstate-dst_resume;
+}
+
/** Get the final size of the download
* @param downloadstate pointer to the download state to get the informations 
from.
* @return the size of the file or ((off_t) -1) in case of error.
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index ac133e0..aac0d46 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -118,7 +118,6 @@ enum {
PM_OPT_NOPASSIVEFTP,
PM_OPT_DLCB,
PM_OPT_DLFNM,
-   PM_OPT_DLOFFSET,
PM_OPT_DLT0,
PM_OPT_DLT,
PM_OPT_DLRATE,
@@ -174,6 +173,7 @@ pmlist_t *pacman_db_test(pmdb_t *db);
* Download states
*/

+off_t pacman_downloadstate_resume(const pmdownloadstate_t *downloadstate);
off_t pacman_downloadstate_size(const pmdownloadstate_t *downloadstate);

/*
diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index f5d942a..a200466 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -48,7 +48,6 @@
pacman_trans_cb_download pm_dlcb = NULL;
/* progress bar */
char *pm_dlfnm=NULL;
-int *pm_dloffset=NULL;
struct timeval *pm_dlt0=NULL, *pm_dlt=NULL;
float *pm_dlrate=NULL;
int *pm_dlxfered1=NULL;
@@ -374,9 +373,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
}
pm_dlfnm[PM_DLFNM_LEN] = '\0';
}
-   if(pm_dloffset) {
-   *pm_dloffset = 0;
-   }
+   downloadstate.dst_resume = 0;

/* ETA setup */
if(pm_dlt0  pm_dlt  pm_dlrate  pm_dlxfered1  pm_dleta_h  pm_dleta_m 
 pm_dleta_s) {
@@ -420,10 +417,8 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
}
if(!filedone) {
if(!stat(output, st)) {
-   if(pm_dloffset) {
-   *pm_dloffset = 
(int)st.st_size;
-   }
-   if(!pm_dloffset || 
!FtpRestart

[Frugalware-git] pacman-g2: libpacman: Add pacman_downloadstate_begin and remove PM_OPT_DLT0.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=7ce09c5120275cc65bf623042b5b695e8dce5a53

commit 7ce09c5120275cc65bf623042b5b695e8dce5a53
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 11:43:23 2013 +0100

libpacman: Add pacman_downloadstate_begin and remove PM_OPT_DLT0.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 99ddc6e..d6ac707 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -44,6 +44,8 @@ pmconflict_t: is now public and deprecate PM_CONFLICT.

pmdb_t: is now public and deprecate PM_DB.

+pacman_downloadstate_begin: Access to download start time.
+
pacman_downloadstate_resume: Access to resume download size.

pacman_downloadstate_size: Access to final download size.
diff --git a/lib/libpacman/handle.c b/lib/libpacman/handle.c
index 49ff507..d36cff6 100644
--- a/lib/libpacman/handle.c
+++ b/lib/libpacman/handle.c
@@ -234,9 +234,6 @@ int _pacman_handle_set_option(pmhandle_t *ph, unsigned char 
val, unsigned long d
case PM_OPT_DLFNM:
pm_dlfnm = (char *)data;
break;
-   case PM_OPT_DLT0:
-   pm_dlt0 = (struct timeval *)data;
-   break;
case PM_OPT_DLT:
pm_dlt = (struct timeval *)data;
break;
@@ -349,7 +346,6 @@ int _pacman_handle_get_option(pmhandle_t *ph, unsigned char 
val, long *data)
case PM_OPT_OLDDELAY:  *data = (long)ph-olddelay; break;
case PM_OPT_LOGMASK:   *data = pm_logmask; break;
case PM_OPT_DLFNM: *data = (long)pm_dlfnm; break;
-   case PM_OPT_DLT0:  *data = (long)pm_dlt0; break;
case PM_OPT_DLT:   *data = (long)pm_dlt; break;
case PM_OPT_DLRATE:*data = (long)pm_dlrate; break;
case PM_OPT_DLXFERED1: *data = (long)pm_dlxfered1; break;
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 1ee8327..7b3fb1c 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -417,6 +417,19 @@ pmlist_t *pacman_db_getgrpcache(pmdb_t *db)
* @{
*/

+/** Get the download start time
+ * @param downloadstate pointer to the download state to get the informations 
from.
+ * @return the size of the file at the start of download resume of the file or 
((off_t) -1) in case of error.
+ */
+int pacman_downloadstate_begin(const pmdownloadstate_t *downloadstate, struct 
timeval *timeval)
+{
+   ASSERT(downloadstate != NULL, return -1);
+   ASSERT(timeval != NULL, return -1);
+
+   *timeval = downloadstate-dst_begin;
+   return 0;
+}
+
/** Get the size at the start of the download resume
* @param downloadstate pointer to the download state to get the informations 
from.
* @return the size of the file at the start of download resume of the file or 
((off_t) -1) in case of error.
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index 17dd85b..6e01375 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -118,7 +118,6 @@ enum {
PM_OPT_NOPASSIVEFTP,
PM_OPT_DLCB,
PM_OPT_DLFNM,
-   PM_OPT_DLT0,
PM_OPT_DLT,
PM_OPT_DLRATE,
PM_OPT_DLXFERED1,
@@ -173,6 +172,7 @@ pmlist_t *pacman_db_test(pmdb_t *db);
* Download states
*/

+int pacman_downloadstate_begin(const pmdownloadstate_t *downloadstate, struct 
timeval *timeval);
off_t pacman_downloadstate_resume(const pmdownloadstate_t *downloadstate);
off_t pacman_downloadstate_size(const pmdownloadstate_t *downloadstate);
off_t pacman_downloadstate_tell(const pmdownloadstate_t *downloadstate);
diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index cdfe5f4..adf5cde 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -48,7 +48,7 @@
pacman_trans_cb_download pm_dlcb = NULL;
/* progress bar */
char *pm_dlfnm=NULL;
-struct timeval *pm_dlt0=NULL, *pm_dlt=NULL;
+struct timeval *pm_dlt=NULL;
float *pm_dlrate=NULL;
int *pm_dlxfered1=NULL;
unsigned int *pm_dleta_h=NULL, *pm_dleta_m=NULL, *pm_dleta_s=NULL;
@@ -377,9 +377,9 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
downloadstate.dst_resume = 0;

/* ETA setup */
-   if(pm_dlt0  pm_dlt  pm_dlrate  
pm_dlxfered1  pm_dleta_h  pm_dleta_m  pm_dleta_s) {
-   gettimeofday(pm_dlt0, NULL);
-   *pm_dlt = *pm_dlt0;
+   gettimeofday(downloadstate.dst_begin, NULL);
+   if(pm_dlt  pm_dlrate  pm_dlxfered1  
pm_dleta_h  pm_dleta_m  pm_dleta_s) {
+   *pm_dlt = downloadstate.dst_begin;
*pm_dlrate = 0;
*pm_dlxfered1 = 0;
*pm_dleta_h = 0;
diff --git a/lib/libpacman/server.h b/lib/libpacman/server.h
index 188f303..f56b533 100644
--- a/lib/libpacman/server.h
+++ b/lib/libpacman/server.h
@@ -45,6 +45,7 @@ typedef struct __pmserver_t {

struct __pmdownloadstate_t {
// FIXME: change int to off_t when the download backend will permit that.
+   struct timeval dst_begin;
int dst_resume;
int dst_size;
int dst_tell;
@@ -62,7 +63,7 @@ extern pacman_trans_cb_download pm_dlcb

[Frugalware-git] pacman-g2: libpacman: Move some util.h to fstdlib.h and fstring.h.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=912d627a8f342994b1a640254d4ed536c6c5b16a

commit 912d627a8f342994b1a640254d4ed536c6c5b16a
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 22:03:31 2013 +0100

libpacman: Move some util.h to fstdlib.h and fstring.h.

diff --git a/lib/libpacman/fstdlib.h b/lib/libpacman/fstdlib.h
index bea2601..53baa2d 100644
--- a/lib/libpacman/fstdlib.h
+++ b/lib/libpacman/fstdlib.h
@@ -21,14 +21,45 @@
#ifndef _F_STDLIB_H
#define _F_STDLIB_H

-#include stdlib.h
#include stdint.h
+#include stdlib.h
+
+#include util/log.h
+#include util.h
+
+static inline
+void *f_malloc(size_t size)
+{
+   void *ptr = malloc(size);
+   if(ptr == NULL) {
+   _pacman_log(PM_LOG_ERROR, _(malloc failure: could not allocate 
%d bytes), size);
+   RET_ERR(PM_ERR_MEMORY, NULL);
+   }
+   return ptr;
+}

-static
+static inline
+void *f_zalloc(size_t size)
+{
+   void *ptr = f_malloc(size);
+   if(ptr != NULL)
+   memset(ptr, 0, size);
+   return ptr;
+}
+
+static inline
int f_ptrcmp(const void *ptr1, const void *ptr2) {
return (uintptr_t)ptr1 - (uintptr_t)ptr2;
}

+static inline
+void f_ptrswap(void **ptr1, void **ptr2)
+{
+   void *tmp = *ptr2;
+   *ptr2 = *ptr1;
+   *ptr1 = tmp;
+}
+
#endif /* _F_STDLIB_H */

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/fstring.h b/lib/libpacman/fstring.h
new file mode 100644
index 000..8188027
--- /dev/null
+++ b/lib/libpacman/fstring.h
@@ -0,0 +1,40 @@
+/*
+ *  fstring.h
+ *
+ *  Copyright (c) 2013 by Michel Hermier herm...@frugalware.org
+ *
+ *  This program 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 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ *  USA.
+ */
+#ifndef _F_STRING_H
+#define _F_STRING_H
+
+#include string.h
+
+static inline
+int f_strempty(const char *s)
+{
+   return s != NULL ? s[0] == '\0' : !0;
+}
+
+static inline
+size_t f_strlen(const char *s)
+{
+   return s != NULL ? strlen(s) : 0;
+}
+
+#endif /* _F_STRING_H */
+
+/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util.h b/lib/libpacman/util.h
index 0f1b8d0..103de74 100644
--- a/lib/libpacman/util.h
+++ b/lib/libpacman/util.h
@@ -59,6 +59,9 @@
#define STARTSTR START 
#define DONESTR DONE 

+#include fstdlib.h
+#include fstring.h
+
char *_pacman_basename(const char *path);
int _pacman_makepath(char *path);
int _pacman_copyfile(char *src, char *dest);
@@ -83,40 +86,11 @@ char* strsep(char** str, const char* delims);
char* mkdtemp(char *template);
#endif

-static inline int _pacman_strempty(const char *s)
-{
-   return s != NULL ? s[0] == '\0' : !0;
-}
-
-static inline size_t _pacman_strlen(const char *s)
-{
-   return s != NULL ? strlen(s) : 0;
-}
-
-static inline void *_pacman_malloc(size_t size)
-{
-   void *ptr = malloc(size);
-   if(ptr == NULL) {
-   _pacman_log(PM_LOG_ERROR, _(malloc failure: could not allocate 
%d bytes), size);
-   RET_ERR(PM_ERR_MEMORY, NULL);
-   }
-   return ptr;
-}
-
-static inline void *_pacman_zalloc(size_t size)
-{
-   void *ptr = _pacman_malloc(size);
-   if(ptr != NULL)
-   memset(ptr, 0, size);
-   return ptr;
-}
-
-static inline void _pacman_ptrswap(void **ptr1, void **ptr2)
-{
-   void *tmp = *ptr2;
-   *ptr2 = *ptr1;
-   *ptr1 = tmp;
-}
+#define _pacman_strempty f_strempty
+#define _pacman_strlen f_strlen
+#define _pacman_malloc f_malloc
+#define _pacman_zalloc f_zalloc
+#define _pacman_ptrswap f_ptrswap

#endif /* _PACMAN_UTIL_H */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add generic f_list_contains.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=cb7c0ff93c42a0ec38a03657dbb4c75e52b57fd3

commit cb7c0ff93c42a0ec38a03657dbb4c75e52b57fd3
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 21:42:23 2013 +0100

libpacman: Add generic f_list_contains.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index 0bd38c6..53bcf30 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -27,6 +27,7 @@
/* pacman-g2 */
#include list.h

+#include fstdlib.h
#include util.h

pmlist_t *_pacman_list_new()
@@ -57,6 +58,16 @@ void _pacman_list_free(pmlist_t *list, _pacman_fn_free fn)
}
}

+int f_list_contains(const pmlist_t *list, flist_compar_t compar, const void 
*ptr)
+{
+   for(; list != NULL; list = list-next) {
+   if(compar(list, ptr) == 0) {
+   return 1;
+   }
+   }
+   return 0;
+}
+
int _pacman_list_count(const pmlist_t *list)
{
int i;
@@ -72,16 +83,14 @@ int _pacman_list_empty(const pmlist_t *list)
return list == NULL;
}

+static
+int _pacman_ptrlistitem_ptrcmp(const pmlist_t *item, const void *ptr) {
+   return f_ptrcmp(item-data, ptr);
+}
+
int _pacman_list_is_in(void *needle, const pmlist_t *haystack)
{
-   const pmlist_t *lp;
-
-   for(lp = haystack; lp; lp = lp-next) {
-   if(lp-data == needle) {
-   return(1);
-   }
-   }
-   return(0);
+   return f_list_contains(haystack, _pacman_ptrlistitem_ptrcmp, needle);
}

pmlist_t *_pacman_list_add(pmlist_t *list, void *data)
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 14e5bca..f0599e1 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -23,6 +23,8 @@

#include pacman.h

+typedef int (*flist_compar_t)(const pmlist_t *item, const void *ptr);
+
/* Chained list struct */
struct __pmlist_t {
void *data;
@@ -42,6 +44,7 @@ typedef int (*_pacman_fn_cmp)(const void *, const void *);
pmlist_t *_pacman_list_new(void);
void _pacman_list_free(pmlist_t *list, _pacman_fn_free fn);

+int f_list_contains(const pmlist_t *list, flist_compar_t compar, const void 
*ptr);
int _pacman_list_count(const pmlist_t *list);
int _pacman_list_empty(const pmlist_t *list);
int _pacman_list_is_in(void *needle, const pmlist_t *haystack);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add f_ptrcmp.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=baceeb0dae25892bd61c7e2e5139af473b8d622c

commit baceeb0dae25892bd61c7e2e5139af473b8d622c
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 21:37:00 2013 +0100

libpacman: Add f_ptrcmp.

diff --git a/lib/libpacman/fstdlib.h b/lib/libpacman/fstdlib.h
new file mode 100644
index 000..bea2601
--- /dev/null
+++ b/lib/libpacman/fstdlib.h
@@ -0,0 +1,34 @@
+/*
+ *  fstdlib.h
+ *
+ *  Copyright (c) 2013 by Michel Hermier herm...@frugalware.org
+ *
+ *  This program 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 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ *  USA.
+ */
+#ifndef _F_STDLIB_H
+#define _F_STDLIB_H
+
+#include stdlib.h
+#include stdint.h
+
+static
+int f_ptrcmp(const void *ptr1, const void *ptr2) {
+   return (uintptr_t)ptr1 - (uintptr_t)ptr2;
+}
+
+#endif /* _F_STDLIB_H */
+
+/* vim: set ts=2 sw=2 noet: */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add f_list_foreach.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=fa18b8528ea1b15f83c23b039df3781452b8de77

commit fa18b8528ea1b15f83c23b039df3781452b8de77
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 22:20:08 2013 +0100

libpacman: Add f_list_foreach.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index 53bcf30..a94b898 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -83,6 +83,13 @@ int _pacman_list_empty(const pmlist_t *list)
return list == NULL;
}

+void f_list_foreach(const pmlist_t *list, flist_visitor_t visitor, void 
*visitor_data)
+{
+   for(; list != NULL; list = list-next) {
+   visitor(list, visitor_data);
+   }
+}
+
static
int _pacman_ptrlistitem_ptrcmp(const pmlist_t *item, const void *ptr) {
return f_ptrcmp(item-data, ptr);
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index f0599e1..5a02406 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -24,6 +24,7 @@
#include pacman.h

typedef int (*flist_compar_t)(const pmlist_t *item, const void *ptr);
+typedef int (*flist_visitor_t)(const pmlist_t *item, void *visitor_data);

/* Chained list struct */
struct __pmlist_t {
@@ -48,6 +49,7 @@ int f_list_contains(const pmlist_t *list, flist_compar_t 
compar, const void *ptr
int _pacman_list_count(const pmlist_t *list);
int _pacman_list_empty(const pmlist_t *list);
int _pacman_list_is_in(void *needle, const pmlist_t *haystack);
+void f_list_foreach(const pmlist_t *list, flist_visitor_t visitor, void 
*visitor_data);

pmlist_t *_pacman_list_add(pmlist_t *list, void *data);
pmlist_t *_pacman_list_add_sorted(pmlist_t *list, void *data, _pacman_fn_cmp 
fn);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: s/ptr/compar_data/ in f_list_contains.

2013-11-16 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=53ea48d2fa3ea242c8ec591e370b88101c9d74b3

commit 53ea48d2fa3ea242c8ec591e370b88101c9d74b3
Author: Michel Hermier herm...@frugalware.org
Date:   Sat Nov 16 22:27:36 2013 +0100

libpacman: s/ptr/compar_data/ in f_list_contains.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index a94b898..75efa1f 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -58,10 +58,10 @@ void _pacman_list_free(pmlist_t *list, _pacman_fn_free fn)
}
}

-int f_list_contains(const pmlist_t *list, flist_compar_t compar, const void 
*ptr)
+int f_list_contains(const pmlist_t *list, flist_compar_t compar, const void 
*compar_data)
{
for(; list != NULL; list = list-next) {
-   if(compar(list, ptr) == 0) {
+   if(compar(list, compar_data) == 0) {
return 1;
}
}
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 5a02406..4a74b48 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -23,7 +23,7 @@

#include pacman.h

-typedef int (*flist_compar_t)(const pmlist_t *item, const void *ptr);
+typedef int (*flist_compar_t)(const pmlist_t *item, const void *compar_data);
typedef int (*flist_visitor_t)(const pmlist_t *item, void *visitor_data);

/* Chained list struct */
@@ -45,7 +45,7 @@ typedef int (*_pacman_fn_cmp)(const void *, const void *);
pmlist_t *_pacman_list_new(void);
void _pacman_list_free(pmlist_t *list, _pacman_fn_free fn);

-int f_list_contains(const pmlist_t *list, flist_compar_t compar, const void 
*ptr);
+int f_list_contains(const pmlist_t *list, flist_compar_t compar, const void 
*compar_data);
int _pacman_list_count(const pmlist_t *list);
int _pacman_list_empty(const pmlist_t *list);
int _pacman_list_is_in(void *needle, const pmlist_t *haystack);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Rework argument checking in _pacman_db_read.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=2951ec7f03d741f891732a41b2c7d5741ffd2d13

commit 2951ec7f03d741f891732a41b2c7d5741ffd2d13
Author: Michel Hermier herm...@frugalware.org
Date:   Thu Nov 14 23:06:39 2013 +0100

libpacman: Rework argument checking in _pacman_db_read.

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index 370e4c6..bc640d6 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -242,7 +242,8 @@ int _pacman_db_read(pmdb_t *db, unsigned int inforeq, 
pmpkg_t *info)
int ret;

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
-   if(info == NULL || info-name[0] == 0 || info-version[0] == 0) {
+   ASSERT(info != NULL, RET_ERR(PM_ERR_PKG_INVALID, -1));
+   if(_pacman_strempty(info-name) || _pacman_strempty(info-version)) {
_pacman_log(PM_LOG_ERROR, _(invalid package entry provided to 
_pacman_db_read));
return(-1);
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Fix style and remove a warning.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=0f1e52e73bc3e2337495132d1f35a4c931d2f81c

commit 0f1e52e73bc3e2337495132d1f35a4c931d2f81c
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 00:26:35 2013 +0100

libpacman: Fix style and remove a warning.

diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 05ed541..4a4a232 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -326,13 +326,11 @@ int pacman_db_update(int force, pmdb_t *db)
if(_pacman_handle_lock(handle) != 0) {
return -1;
}
-
if(!_pacman_list_is_in(db, handle-dbs_sync)) {
RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
}

status = _pacman_syncdb_update(db, force);
-rmlck:
if(_pacman_handle_unlock(handle) != 0) {
return -1;
}
@@ -984,6 +982,7 @@ int pacman_reg_match(const char *string, const char 
*pattern)
{
ASSERT(string != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
ASSERT(pattern != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
+
return(_pacman_reg_match(string, pattern));
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Replace lastupdate to timestamp in log.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=73018174a41ff6e13ae1fb0bfe22640c377703fd

commit 73018174a41ff6e13ae1fb0bfe22640c377703fd
Author: Michel Hermier herm...@frugalware.org
Date:   Thu Nov 14 13:33:09 2013 +0100

libpacman: Replace lastupdate to timestamp in log.

diff --git a/lib/libpacman/db/syncdb.c b/lib/libpacman/db/syncdb.c
index 0830a97..43e89b3 100644
--- a/lib/libpacman/db/syncdb.c
+++ b/lib/libpacman/db/syncdb.c
@@ -100,10 +100,9 @@ int _pacman_syncdb_update(pmdb_t *db, int force)
int ret, updated=0;

if(!force) {
-   /* get the lastupdate time */
_pacman_db_gettimestamp(db, timestamp);
if(timestamp == PM_TIME_INVALID) {
-   _pacman_log(PM_LOG_DEBUG, _(failed to get lastupdate 
time for %s (no big deal)\n), db-treename);
+   _pacman_log(PM_LOG_DEBUG, _(failed to get timestamp 
for %s (no big deal)\n), db-treename);
}
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Constify pacman_cb_log msg argument.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=bb6e634446b47f7a70927f69243b0d947407c287

commit bb6e634446b47f7a70927f69243b0d947407c287
Author: Michel Hermier herm...@frugalware.org
Date:   Thu Nov 14 23:56:40 2013 +0100

libpacman: Constify pacman_cb_log msg argument.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 14f67a6..05ec765 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -18,6 +18,7 @@ None.

 Symbols changed:

+pacman_cb_log: Make char * message argument a constant.
pacman_logaction: Now returns a void instead of a int to reflect success. 
Logging should allways success and not be intrusive.
pacman_reg_match: Make arguments const.
pacman_trans_cb_progress: Second argument (pkgname) is now a const.
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index ee062ba..2ecfa15 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -84,7 +84,7 @@ int pacman_release(void);
#define PM_LOG_FUNCTION 0x20

/* Log callback */
-typedef void (*pacman_cb_log)(unsigned short, char *);
+typedef void (*pacman_cb_log)(unsigned short, const char *msg);

void pacman_logaction(const char *format, ...);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: documentation: Fix style.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a0a68579ccfe60cde33af629426f7af032fc0176

commit a0a68579ccfe60cde33af629426f7af032fc0176
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 00:23:56 2013 +0100

documentation: Fix style.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 787c8fe..5c9e86b 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -19,20 +19,31 @@ None.
 Symbols changed:

pacman_cb_log: Make 'message' argument a constant.
+
pacman_logaction: Now returns a void instead of a int to reflect success. 
Logging should allways success and not be intrusive.
+
pacman_parse_config: Make 'file' argument a constant. Remove 'this_section' 
argument, it is internal and should not have been exposed publicly.
+
pacman_reg_match: Make arguments constants.
+
pacman_trans_cb_progress: Make 'pkgname' argument a constant.

 Symbols added:

pmconflict_t: is now public and deprecate PM_CONFLICT.
+
pmdb_t: is now public and deprecate PM_DB.
+
pmdepmissing_t: is now public and deprecate PM_DEPMISS.
+
pmgrp_t: is now public and deprecate PM_GRP.
+
pmlist_t: is now public and deprecate PM_LIST.
+
pmpkg_t: is now public and deprecate PM_PKG.
+
pmsyncpkg_t: is now public and deprecate PM_SYNCPKG.
+
PM_PKG_TRIGGERS: Access to package triggers list.

 Symbols removed:
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Move local_db directory creation to _pacman_localdb_open.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a13872d793437ba4665e58b0421696bf3152e08c

commit a13872d793437ba4665e58b0421696bf3152e08c
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 01:11:48 2013 +0100

libpacman: Move local_db directory creation to _pacman_localdb_open.

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index f05e14b..457274a 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -344,9 +344,7 @@ int _pacman_db_setlastupdate(pmdb_t *db, const char *ts)

pmdb_t *_pacman_db_register(const char *treename, pacman_cb_db_register 
callback)
{
-   struct stat buf;
pmdb_t *db;
-   char path[PATH_MAX];

if(strcmp(treename, local) == 0) {
if(handle-db_local != NULL) {
@@ -366,15 +364,6 @@ pmdb_t *_pacman_db_register(const char *treename, 
pacman_cb_db_register callback

_pacman_log(PM_LOG_FLOW1, _(registering database '%s'), treename);

-   /* make sure the database directory exists */
-   snprintf(path, PATH_MAX, %s%s/%s, handle-root, handle-dbpath, 
treename);
-   if(!strcmp(treename, local)  (stat(path, buf) != 0 || 
!S_ISDIR(buf.st_mode))) {
-   _pacman_log(PM_LOG_FLOW1, _(database directory '%s' does not 
exist -- try creating it), path);
-   if(_pacman_makepath(path) != 0) {
-   RET_ERR(PM_ERR_SYSTEM, NULL);
-   }
-   }
-
db = _pacman_db_new(handle-root, handle-dbpath, treename);
if(db == NULL) {
RET_ERR(PM_ERR_DB_CREATE, NULL);
diff --git a/lib/libpacman/db/localdb.c b/lib/libpacman/db/localdb.c
index d5e81f0..2206c2d 100644
--- a/lib/libpacman/db/localdb.c
+++ b/lib/libpacman/db/localdb.c
@@ -109,6 +109,15 @@ pmlist_t *_pacman_localdb_test(pmdb_t *db)
static
int _pacman_localdb_open(pmdb_t *db, int flags, time_t *timestamp)
{
+   struct stat buf;
+
+   /* make sure the database directory exists */
+   if(stat(db-path, buf) != 0 || !S_ISDIR(buf.st_mode)) {
+   _pacman_log(PM_LOG_FLOW1, _(database directory '%s' does not 
exist -- try creating it), db-path);
+   if(_pacman_makepath(db-path) != 0) {
+   RET_ERR(PM_ERR_SYSTEM, -1);
+   }
+   }
db-handle = opendir(db-path);
ASSERT(db-handle != NULL, RET_ERR(PM_ERR_DB_OPEN, -1));
_pacman_db_gettimestamp(db, timestamp);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Constify pacman_parse_config file argument.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=4b9d8b98f2b98f78e59e6da8fed9c9cf225b4811

commit 4b9d8b98f2b98f78e59e6da8fed9c9cf225b4811
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 00:20:58 2013 +0100

libpacman: Constify pacman_parse_config file argument.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 3f28f66..d7b02c9 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -20,7 +20,7 @@ None.

pacman_cb_log: Make char * message argument a constant.
pacman_logaction: Now returns a void instead of a int to reflect success. 
Logging should allways success and not be intrusive.
-pacman_parse_config: Remove this_section argument, it is internal and should 
not have been exposed publicly.
+pacman_parse_config: Make 'file' argument a constant. Remove 'this_section' 
argument, it is internal and should not have been exposed publicly.
pacman_reg_match: Make arguments const.
pacman_trans_cb_progress: Second argument (pkgname) is now a const.

diff --git a/lib/libpacman/config_parser.c b/lib/libpacman/config_parser.c
index 0d4b381..ec0798a 100644
--- a/lib/libpacman/config_parser.c
+++ b/lib/libpacman/config_parser.c
@@ -63,7 +63,7 @@

#define min(X, Y)  ((X)  (Y) ? (X) : (Y))

-int _pacman_parse_config(char *file, pacman_cb_db_register callback, const 
char *this_section)
+int _pacman_parse_config(const char *file, pacman_cb_db_register callback, 
const char *this_section)
{
FILE *fp = NULL;
char line[PATH_MAX+1];
diff --git a/lib/libpacman/config_parser.h b/lib/libpacman/config_parser.h
index 4f6c724..440e2b6 100644
--- a/lib/libpacman/config_parser.h
+++ b/lib/libpacman/config_parser.h
@@ -26,7 +26,7 @@

#include pacman.h

-int _pacman_parse_config(char *file, pacman_cb_db_register callback, const 
char *this_section);
+int _pacman_parse_config(const char *file, pacman_cb_db_register callback, 
const char *this_section);

#endif /* _PACMAN_CONFIG_PARSER_H */

diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index ea0c94f..05ed541 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -993,7 +993,7 @@ int pacman_reg_match(const char *string, const char 
*pattern)
* @param this_section the config current section being parsed
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-int pacman_parse_config(char *file, pacman_cb_db_register callback)
+int pacman_parse_config(const char *file, pacman_cb_db_register callback)
{
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));

diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index ef1e1ef..0a87a66 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -223,7 +223,7 @@ pmlist_t *pacman_pkg_getowners(char *filename);
int pacman_pkg_load(char *filename, pmpkg_t **pkg);
int pacman_pkg_free(pmpkg_t *pkg);
char *pacman_fetch_pkgurl(char *url);
-int pacman_parse_config(char *file, pacman_cb_db_register callback);
+int pacman_parse_config(const char *file, pacman_cb_db_register callback);
int pacman_pkg_vercmp(const char *ver1, const char *ver2);
int pacman_reg_match(const char *string, const char *pattern);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Pass the handle instead of passing root and dbpath when creating a db.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a8403005ef69fa678259ecd36c8557ec6c5ccf3c

commit a8403005ef69fa678259ecd36c8557ec6c5ccf3c
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 01:27:24 2013 +0100

libpacman: Pass the handle instead of passing root and dbpath when creating a 
db.

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index 457274a..2f87335 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -66,7 +66,7 @@ FILE *_pacman_db_fopen_lastupdate(const pmdb_t *db, const 
char *mode)
return fopen(path, mode);
}

-pmdb_t *_pacman_db_new(const char *root, const char* dbpath, const char 
*treename)
+pmdb_t *_pacman_db_new(pmhandle_t *handle, const char *treename)
{
pmdb_t *db = _pacman_zalloc(sizeof(pmdb_t));

@@ -74,12 +74,12 @@ pmdb_t *_pacman_db_new(const char *root, const char* 
dbpath, const char *treenam
return(NULL);
}

-   db-path = 
_pacman_malloc(strlen(root)+strlen(dbpath)+strlen(treename)+2);
+   db-path = 
_pacman_malloc(strlen(handle-root)+strlen(handle-dbpath)+strlen(treename)+2);
if(db-path == NULL) {
FREE(db);
return(NULL);
}
-   sprintf(db-path, %s%s/%s, root, dbpath, treename);
+   sprintf(db-path, %s%s/%s, handle-root, handle-dbpath, treename);

STRNCPY(db-treename, treename, PATH_MAX);

@@ -364,7 +364,7 @@ pmdb_t *_pacman_db_register(const char *treename, 
pacman_cb_db_register callback

_pacman_log(PM_LOG_FLOW1, _(registering database '%s'), treename);

-   db = _pacman_db_new(handle-root, handle-dbpath, treename);
+   db = _pacman_db_new(handle, treename);
if(db == NULL) {
RET_ERR(PM_ERR_DB_CREATE, NULL);
}
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index 397a6f3..2b6e28a 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -26,7 +26,7 @@
#include limits.h
#include time.h

-#include pacman.h
+#include handle.h

/* Database entries */
#define INFRQ_NONE 0x00
@@ -68,7 +68,7 @@ struct __pmdb_t {
char lastupdate[16];
};

-pmdb_t *_pacman_db_new(const char *root, const char *dbpath, const char 
*treename);
+pmdb_t *_pacman_db_new(pmhandle_t *handle, const char *treename);
void _pacman_db_free(void *data);
int _pacman_db_cmp(const void *db1, const void *db2);
pmlist_t *_pacman_db_search(pmdb_t *db, pmlist_t *needles);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove now unused pmdb_t::lastupdate.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9373283a3e440e7e2a244f21e2d25bff5789bbce

commit 9373283a3e440e7e2a244f21e2d25bff5789bbce
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 01:34:52 2013 +0100

libpacman: Remove now unused pmdb_t::lastupdate.

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index 2f87335..b7e6047 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -180,12 +180,7 @@ int _pacman_db_open(pmdb_t *db, int flags)
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
ASSERT(flags == 0, RET_ERR(PM_ERR_DB_OPEN, -1)); /* No flags are supported for 
now */

-   ret = db-ops-open(db, flags, db-cache_timestamp);
-   if(ret == 0  _pacman_db_getlastupdate(db, db-lastupdate) == -1) {
-   db-lastupdate[0] = '\0';
-   }
-
-   return ret;
+   return db-ops-open(db, flags, db-cache_timestamp);
}

int _pacman_db_close(pmdb_t *db)
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index 2b6e28a..196f453 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -65,7 +65,6 @@ struct __pmdb_t {
pmlist_t *pkgcache;
pmlist_t *grpcache;
pmlist_t *servers;
-   char lastupdate[16];
};

pmdb_t *_pacman_db_new(pmhandle_t *handle, const char *treename);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: documentation: Uniformize symbol changed messages.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=31d9b6ce295c2d4d60f5f7ee5ab1ec6e13e52636

commit 31d9b6ce295c2d4d60f5f7ee5ab1ec6e13e52636
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 00:22:32 2013 +0100

documentation: Uniformize symbol changed messages.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index d7b02c9..787c8fe 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -18,11 +18,11 @@ None.

 Symbols changed:

-pacman_cb_log: Make char * message argument a constant.
+pacman_cb_log: Make 'message' argument a constant.
pacman_logaction: Now returns a void instead of a int to reflect success. 
Logging should allways success and not be intrusive.
pacman_parse_config: Make 'file' argument a constant. Remove 'this_section' 
argument, it is internal and should not have been exposed publicly.
-pacman_reg_match: Make arguments const.
-pacman_trans_cb_progress: Second argument (pkgname) is now a const.
+pacman_reg_match: Make arguments constants.
+pacman_trans_cb_progress: Make 'pkgname' argument a constant.

 Symbols added:
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make _pacman_db_getlastupdate and _pacman_db_setlastupdate private to db.c.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=acb0ea418339100f622e25be9fa6bc29061fc753

commit acb0ea418339100f622e25be9fa6bc29061fc753
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 01:38:51 2013 +0100

libpacman: Make _pacman_db_getlastupdate and _pacman_db_setlastupdate private 
to db.c.

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index b7e6047..61e9cf8 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -57,6 +57,9 @@
#include cache.h
#include pacman.h

+static int _pacman_db_getlastupdate(pmdb_t *db, char *ts);
+static int _pacman_db_setlastupdate(pmdb_t *db, const char *ts);
+
static
FILE *_pacman_db_fopen_lastupdate(const pmdb_t *db, const char *mode)
{
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index 196f453..491053d 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -84,8 +84,6 @@ pmpkg_t *_pacman_db_scan(pmdb_t *db, const char *target, 
unsigned int inforeq);
int _pacman_db_read(pmdb_t *db, unsigned int inforeq, pmpkg_t *info);
int _pacman_db_write(pmdb_t *db, pmpkg_t *info, unsigned int inforeq);
int _pacman_db_remove(pmdb_t *db, pmpkg_t *info);
-int _pacman_db_getlastupdate(pmdb_t *db, char *ts);
-int _pacman_db_setlastupdate(pmdb_t *db, const char *ts);
pmdb_t *_pacman_db_register(const char *treename, pacman_cb_db_register 
callback);

#endif /* _PACMAN_DB_H */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Fix autogen remove now removed files.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=3db07f124b58cf4fb588f14e191332845d54e172

commit 3db07f124b58cf4fb588f14e191332845d54e172
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 00:27:26 2013 +0100

libpacman: Fix autogen remove now removed files.

diff --git a/lib/libpacman/po/POTFILES.in b/lib/libpacman/po/POTFILES.in
index 1509df8..da3d87d 100644
--- a/lib/libpacman/po/POTFILES.in
+++ b/lib/libpacman/po/POTFILES.in
@@ -5,8 +5,6 @@ util/log.c
util/list.c
add.c
pacman.c
-backup.c
-be_files.c
cache.c
conflict.c
db.c
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Move configuration parser to its own file.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c047c7b612cdb425e98fdd99bc02dd055d3eccec

commit c047c7b612cdb425e98fdd99bc02dd055d3eccec
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 00:12:19 2013 +0100

libpacman: Move configuration parser to its own file.

diff --git a/lib/libpacman/Makefile.am b/lib/libpacman/Makefile.am
index 6e631bd..9a2101f 100644
--- a/lib/libpacman/Makefile.am
+++ b/lib/libpacman/Makefile.am
@@ -38,6 +38,7 @@ TARGETS = \
$(PACKAGE_TARGETS) \
$(UTIL_TARGETS) \
util.c \
+   config_parser.c \
error.c \
package.c \
group.c \
diff --git a/lib/libpacman/config_parser.c b/lib/libpacman/config_parser.c
new file mode 100644
index 000..0d4b381
--- /dev/null
+++ b/lib/libpacman/config_parser.c
@@ -0,0 +1,315 @@
+/*
+ *  config_parser.c
+ *
+ *  Copyright (c) 2002-2006 by Judd Vinet jvi...@zeroflux.org
+ *  Copyright (c) 2005 by Aurelien Foret orel...@chez.com
+ *  Copyright (c) 2005 by Christian Hamar kr...@linuxforum.hu
+ *  Copyright (c) 2005, 2006. 2007 by Miklos Vajna vmik...@frugalware.org
+ *
+ *  This program 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 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ *  USA.
+ */
+
+#include config.h
+#include stdio.h
+#include stdlib.h
+#include errno.h
+#include fcntl.h
+#include string.h
+#include sys/types.h
+#include sys/stat.h
+#include unistd.h
+#include time.h
+#include syslog.h
+#include limits.h /* PATH_MAX */
+#include stdarg.h
+#include libintl.h
+
+/* pacman-g2 */
+#include pacman.h
+
+#include db/syncdb.h
+#include hash/md5.h
+#include hash/sha1.h
+#include util/list.h
+#include util/log.h
+#include util/stringlist.h
+#include error.h
+#include deps.h
+#include versioncmp.h
+#include package.h
+#include group.h
+#include util.h
+#include db.h
+#include cache.h
+#include conflict.h
+#include add.h
+#include remove.h
+#include sync.h
+#include handle.h
+#include server.h
+
+#define min(X, Y)  ((X)  (Y) ? (X) : (Y))
+
+int _pacman_parse_config(char *file, pacman_cb_db_register callback, const 
char *this_section)
+{
+   FILE *fp = NULL;
+   char line[PATH_MAX+1];
+   char *ptr = NULL;
+   char *key = NULL;
+   int linenum = 0;
+   char section[256] = ;
+   pmdb_t *db = NULL;
+
+   /* Sanity checks */
+   ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+
+   fp = fopen(file, r);
+   if(fp == NULL) {
+   return(0);
+   }
+
+   if(!_pacman_strempty(this_section)) {
+   strncpy(section, this_section, min(255, strlen(this_section)));
+   if(!strcmp(section, local)) {
+   RET_ERR(PM_ERR_CONF_LOCAL, -1);
+   }
+   if(strcmp(section, options)) {
+   db = _pacman_db_register(section, callback);
+   }
+   } else {
+   FREELIST(handle-ignorepkg);
+   FREELIST(handle-holdpkg);
+   }
+
+   while(fgets(line, PATH_MAX, fp)) {
+   linenum++;
+   _pacman_strtrim(line);
+   if(line[0] == '\0' || line[0] == '#') {
+   continue;
+   }
+   if((ptr = strchr(line, '#'))) {
+   *ptr = '\0';
+   }
+   if(line[0] == '['  line[strlen(line)-1] == ']') {
+   /* new config section */
+   ptr = line;
+   ptr++;
+   strncpy(section, ptr, min(255, strlen(ptr)-1));
+   section[min(255, strlen(ptr)-1)] = '\0';
+   _pacman_log(PM_LOG_DEBUG, _(config: new section 
'%s'\n), section);
+   if(!strlen(section)) {
+   RET_ERR(PM_ERR_CONF_BAD_SECTION, -1);
+   }
+   if(!strcmp(section, local)) {
+   RET_ERR(PM_ERR_CONF_LOCAL, -1);
+   }
+   if(strcmp(section, options)) {
+   db = _pacman_db_register(section, callback);
+   if(db == NULL) {
+   /* pm_errno is set by 
pacman_db_register */
+   return(-1);
+   }
+   }
+   } else

[Frugalware-git] pacman-g2: libpacman: Vectorize lastupdate file opening.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=2211d44102c5f01f78d5b5770d39a47b56b21082

commit 2211d44102c5f01f78d5b5770d39a47b56b21082
Author: Michel Hermier herm...@frugalware.org
Date:   Thu Nov 14 23:24:41 2013 +0100

libpacman: Vectorize lastupdate file opening.

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index bc640d6..f05e14b 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -57,6 +57,15 @@
#include cache.h
#include pacman.h

+static
+FILE *_pacman_db_fopen_lastupdate(const pmdb_t *db, const char *mode)
+{
+   char path[PATH_MAX];
+
+   snprintf(path, sizeof(path), %s%s/%s.lastupdate, handle-root, 
handle-dbpath, db-treename);
+   return fopen(path, mode);
+}
+
pmdb_t *_pacman_db_new(const char *root, const char* dbpath, const char 
*treename)
{
pmdb_t *db = _pacman_zalloc(sizeof(pmdb_t));
@@ -286,17 +295,14 @@ int _pacman_db_remove(pmdb_t *db, pmpkg_t *info)
int _pacman_db_getlastupdate(pmdb_t *db, char *ts)
{
FILE *fp;
-   char file[PATH_MAX];

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
if(ts == NULL) {
return(-1);
}

-   snprintf(file, PATH_MAX, %s%s/%s.lastupdate, handle-root, 
handle-dbpath, db-treename);
-
/* get the last update time, if it's there */
-   if((fp = fopen(file, r)) == NULL) {
+   if((fp = _pacman_db_fopen_lastupdate(db, r)) == NULL) {
return(-1);
} else {
char line[256];
@@ -319,16 +325,13 @@ int _pacman_db_getlastupdate(pmdb_t *db, char *ts)
int _pacman_db_setlastupdate(pmdb_t *db, const char *ts)
{
FILE *fp;
-   char file[PATH_MAX];

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
if(_pacman_strempty(ts)) {
return(-1);
}

-   snprintf(file, PATH_MAX, %s%s/%s.lastupdate, handle-root, 
handle-dbpath, db-treename);
-
-   if((fp = fopen(file, w)) == NULL) {
+   if((fp = _pacman_db_fopen_lastupdate(db, w)) == NULL) {
return(-1);
}
if(fputs(ts, fp) = 0) {
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make _pacman_localdb_remove static.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=cb9693838916b488e126a234c614e2814a440d2e

commit cb9693838916b488e126a234c614e2814a440d2e
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 00:59:53 2013 +0100

libpacman: Make _pacman_localdb_remove static.

diff --git a/lib/libpacman/db/localdb.c b/lib/libpacman/db/localdb.c
index 86e2602..d5e81f0 100644
--- a/lib/libpacman/db/localdb.c
+++ b/lib/libpacman/db/localdb.c
@@ -379,6 +379,7 @@ cleanup:
return(retval);
}

+static
int _pacman_localdb_remove(pmdb_t *db, pmpkg_t *info)
{
char path[PATH_MAX];
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove internal this_section argument of pacman_parse_config for public API.

2013-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8c94eb37c507c530609abc90a2161a4e9c6cd803

commit 8c94eb37c507c530609abc90a2161a4e9c6cd803
Author: Michel Hermier herm...@frugalware.org
Date:   Fri Nov 15 00:16:39 2013 +0100

libpacman: Remove internal this_section argument of pacman_parse_config for 
public API.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 05ec765..3f28f66 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -20,6 +20,7 @@ None.

pacman_cb_log: Make char * message argument a constant.
pacman_logaction: Now returns a void instead of a int to reflect success. 
Logging should allways success and not be intrusive.
+pacman_parse_config: Remove this_section argument, it is internal and should 
not have been exposed publicly.
pacman_reg_match: Make arguments const.
pacman_trans_cb_progress: Second argument (pkgname) is now a const.

diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 1726ad1..ea0c94f 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -993,11 +993,11 @@ int pacman_reg_match(const char *string, const char 
*pattern)
* @param this_section the config current section being parsed
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
-int pacman_parse_config(char *file, pacman_cb_db_register callback, const char 
*this_section)
+int pacman_parse_config(char *file, pacman_cb_db_register callback)
{
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));

-   return _pacman_parse_config(file, callback, this_section);
+   return _pacman_parse_config(file, callback, NULL);
}

/* @} */
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index 2ecfa15..ef1e1ef 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -223,7 +223,7 @@ pmlist_t *pacman_pkg_getowners(char *filename);
int pacman_pkg_load(char *filename, pmpkg_t **pkg);
int pacman_pkg_free(pmpkg_t *pkg);
char *pacman_fetch_pkgurl(char *url);
-int pacman_parse_config(char *file, pacman_cb_db_register callback, const char 
*this_section);
+int pacman_parse_config(char *file, pacman_cb_db_register callback);
int pacman_pkg_vercmp(const char *ver1, const char *ver2);
int pacman_reg_match(const char *string, const char *pattern);

diff --git a/src/pacman-g2/pacman-g2.c b/src/pacman-g2/pacman-g2.c
index 4f7d33d..8429842 100644
--- a/src/pacman-g2/pacman-g2.c
+++ b/src/pacman-g2/pacman-g2.c
@@ -561,7 +561,7 @@ int main(int argc, char *argv[])
if(config-configfile == NULL) {
config-configfile = strdup(PACCONF);
}
-   if(pacman_parse_config(config-configfile, cb_db_register, ) != 0) {
+   if(pacman_parse_config(config-configfile, cb_db_register) != 0) {
ERR(NL, _(failed to parse config (%s)\n), pacman_strerror(pm_errno));
cleanup(1);
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] frugalware-current: ntp-4.2.6p5-3-x86_64

2013-11-14 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=b3dbf3995a1129bf7d6089cc2ba777a98e754dbb

commit b3dbf3995a1129bf7d6089cc2ba777a98e754dbb
Author: Michel Hermier herm...@frugalware.org
Date:   Thu Nov 14 12:40:10 2013 +0100

ntp-4.2.6p5-3-x86_64

* Rework ntpd.service so it get started.

diff --git a/source/network-extra/ntp/FrugalBuild 
b/source/network-extra/ntp/FrugalBuild
index dcf6484..623329c 100644
--- a/source/network-extra/ntp/FrugalBuild
+++ b/source/network-extra/ntp/FrugalBuild
@@ -4,7 +4,7 @@

pkgname=ntp
pkgver=4.2.6p5
-pkgrel=2
+pkgrel=3
pkgdesc=The ntp daemon from ntp.org
url=http://www.ntp.org/;
conflicts=('openntpd')
@@ -19,7 +19,7 @@ 
source=(http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/$pkgname-$pkgver.tar.gz \
backup=(etc/ntp.org.conf)
sha1sums=('4a5353a4791b6f4315a66c28d504ec6c7926b192' \
'21ecca90c622951fcb8469ee5822416bb6bf6a68' \
-  'cc45d5cd82b38615f5606b38c280482dd2b00f0b' \
+  'e69452d1dae5b8546d1668b771d877e13a18c316' \
'9e116eabff29a0216bfc2c56817ba48d1f3182f6')
_F_systemd_units=(ntpd=e)
Finclude systemd
diff --git a/source/network-extra/ntp/ntpd.service 
b/source/network-extra/ntp/ntpd.service
index 5e3a42c..ee4e1b9 100644
--- a/source/network-extra/ntp/ntpd.service
+++ b/source/network-extra/ntp/ntpd.service
@@ -1,10 +1,12 @@
[Unit]
Description=Network Time Service
+After=network.target syslog.target

[Service]
Type=forking
ExecStart=/usr/bin/ntpd -g -c /etc/ntp.org.conf
+Restart=always
PIDFile=/var/run/ntp.pid

[Install]
-WantedBy=time-sync.target
+WantedBy=multi-user.target time-sync.target
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Plug a warning (error).

2013-11-14 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=670abb51edef6aa44d794d8a611c331543730376

commit 670abb51edef6aa44d794d8a611c331543730376
Author: Michel Hermier herm...@frugalware.org
Date:   Thu Nov 14 08:31:37 2013 +0100

libpacman: Plug a warning (error).

diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index c4aed22..5a874e4 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -396,7 +396,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,

_pacman_strtrim(fmtime);
if(_pacman_ftp_strpmdtm(fmtime, mdtm) != NULL) {
-   if(mtime1  
difftime(mdtm, mtime1) == 0) {
+   if(mtime1  
difftime(mdtm, *mtime1) == 0) {
_pacman_log(PM_LOG_DEBUG, _(mtimes are identical, skipping %s\n), fn);
filedone = -1;
complete = _pacman_list_add(complete, fn);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make mtime1 a time_t in _pacman_downloadfiles_forreal.

2013-11-14 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=27b629c2e14e444bac3c137c47375e67d98e8408

commit 27b629c2e14e444bac3c137c47375e67d98e8408
Author: Michel Hermier herm...@frugalware.org
Date:   Thu Nov 14 08:23:12 2013 +0100

libpacman: Make mtime1 a time_t in _pacman_downloadfiles_forreal.

diff --git a/lib/libpacman/db/syncdb.c b/lib/libpacman/db/syncdb.c
index 85a16c8..2e7d73e 100644
--- a/lib/libpacman/db/syncdb.c
+++ b/lib/libpacman/db/syncdb.c
@@ -94,14 +94,14 @@ int _pacman_syncdb_update(pmdb_t *db, int force)
{
char path[PATH_MAX], dirpath[PATH_MAX];
pmlist_t *files = NULL;
-   time_t newmtime = (time_t) -1;
-   char lastupdate[16] = ;
+   time_t newmtime = ((time_t) -1);
+   time_t timestamp = ((time_t) -1);
int ret, updated=0;

if(!force) {
/* get the lastupdate time */
-   _pacman_db_getlastupdate(db, lastupdate);
-   if(_pacman_strempty(lastupdate)) {
+   _pacman_db_gettimestamp(db, timestamp);
+   if(timestamp == ((time_t) -1)) {
_pacman_log(PM_LOG_DEBUG, _(failed to get lastupdate time for %s (no big 
deal)\n), db-treename);
}
}
@@ -112,7 +112,7 @@ int _pacman_syncdb_update(pmdb_t *db, int force)

snprintf(path, PATH_MAX, %s%s, handle-root, handle-dbpath);

-   ret = _pacman_downloadfiles_forreal(db-servers, path, files, 
lastupdate, newmtime, 0);
+   ret = _pacman_downloadfiles_forreal(db-servers, path, files, 
timestamp, newmtime, 0);
FREELIST(files);
if(ret != 0) {
if(ret == -1) {
diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index d454f98..52d1f03 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -155,7 +155,7 @@ int _pacman_downloadfiles(pmlist_t *servers, const char 
*localpath, pmlist_t *fi
* -1 on error
*/
int _pacman_downloadfiles_forreal(pmlist_t *servers, const char *localpath,
-   pmlist_t *files, const char *mtime1, time_t *mtime2, int skip)
+   pmlist_t *files, const time_t *mtime1, time_t *mtime2, int skip)
{
int fsz;
netbuf *control = NULL;
@@ -391,19 +391,21 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, 
const char *localpath,
if(!FtpModDate(fn, fmtime, sizeof(fmtime)-1, control)) {
_pacman_log(PM_LOG_WARNING, _(failed to get mtime for %s\n), fn);
} else {
+   time_t mdtm;
+
_pacman_strtrim(fmtime);
-   if(mtime1  
!strcmp(mtime1, fmtime)) {
-   /* mtimes are 
identical, skip this file */
-   
_pacman_log(PM_LOG_DEBUG, _(mtimes are identical, skipping %s\n), fn);
-   filedone = -1;
-   complete = 
_pacman_list_add(complete, fn);
-   } else {
-   if(mtime2) {
-   
if(_pacman_ftp_strpmdtm(fmtime, mtime2) == NULL) {
-   
_pacman_log(PM_LOG_WARNING, _(failed to get mtime for %s\n), fn);
-   
*mtime2 = (time_t) -1;
+   
if(_pacman_ftp_strpmdtm(fmtime, mdtm) != NULL) {
+   if(mtime1  
difftime(mdtm, mtime1) == 0) {
+   
_pacman_log(PM_LOG_DEBUG, _(mtimes are identical, skipping %s\n), fn);
+   
filedone = -1;
+   
complete = _pacman_list_add(complete, fn);
+   } else {
+   
if(mtime2) {
+   
*mtime2 = mdtm;
}
}
+   } else {
+   
_pacman_log(PM_LOG_WARNING, _(failed to get mtime for %s\n), fn);
}
}
}
@@ -482,27 +484,8 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
} else {
snprintf(src, PATH_MAX, %s://%s%s%s, server-protocol, server-server, 
server-path, fn);
}
-   if(mtime1  strlen(mtime1)) {
-   struct tm tmref;
-   time_t t, tref;
-   int diff;
-   /* date conversion from 
MMDDHHMMSS

[Frugalware-git] pacman-g2: libpacman: Define PM_TIME_INVALID so we have the same symbol everywhere.

2013-11-14 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b7a2735f88304947b0324f622e250ff29bf665f6

commit b7a2735f88304947b0324f622e250ff29bf665f6
Author: Michel Hermier herm...@frugalware.org
Date:   Thu Nov 14 08:31:03 2013 +0100

libpacman: Define PM_TIME_INVALID so we have the same symbol everywhere.

diff --git a/lib/libpacman/db/syncdb.c b/lib/libpacman/db/syncdb.c
index 2e7d73e..0830a97 100644
--- a/lib/libpacman/db/syncdb.c
+++ b/lib/libpacman/db/syncdb.c
@@ -46,6 +46,7 @@
#include io/archive.h
#include util/log.h
#include util/stringlist.h
+#include util/time.h
#include util.h
#include cache.h
#include db.h
@@ -94,14 +95,14 @@ int _pacman_syncdb_update(pmdb_t *db, int force)
{
char path[PATH_MAX], dirpath[PATH_MAX];
pmlist_t *files = NULL;
-   time_t newmtime = ((time_t) -1);
-   time_t timestamp = ((time_t) -1);
+   time_t newmtime = PM_TIME_INVALID;
+   time_t timestamp = PM_TIME_INVALID;
int ret, updated=0;

if(!force) {
/* get the lastupdate time */
_pacman_db_gettimestamp(db, timestamp);
-   if(timestamp == ((time_t) -1)) {
+   if(timestamp == PM_TIME_INVALID) {
_pacman_log(PM_LOG_DEBUG, _(failed to get lastupdate time for %s (no big 
deal)\n), db-treename);
}
}
@@ -121,7 +122,7 @@ int _pacman_syncdb_update(pmdb_t *db, int force)
}
return 1; /* Means up2date */
} else {
-   if(newmtime != ((time_t) -1)) {
+   if(newmtime != PM_TIME_INVALID) {
_pacman_log(PM_LOG_DEBUG, _(sync: new mtime for %s: %s\n), db-treename, 
newmtime);
updated = 1;
}
diff --git a/lib/libpacman/io/archive.h b/lib/libpacman/io/archive.h
index 6f7a1ea..e296b89 100644
--- a/lib/libpacman/io/archive.h
+++ b/lib/libpacman/io/archive.h
@@ -26,6 +26,6 @@
struct archive *_pacman_archive_read_open_all_file(const char *file);
FILE *_pacman_archive_read_fropen(struct archive *a);

-#endif /* _PACMAN_UTIL_H */
+#endif /* _PACMAN_ARCHIVE_FILE_H */

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/io/ftp.c b/lib/libpacman/io/ftp.c
index 373084f..a4e8333 100644
--- a/lib/libpacman/io/ftp.c
+++ b/lib/libpacman/io/ftp.c
@@ -45,7 +45,7 @@ char *_pacman_ftp_strpmdtm(const char *s, time_t *time)
if((ret = strptime(s, PM_FTP_MDTM_FORMAT, ptimestamp)) != NULL) {
time_t tmp;

-   if((tmp = mktime(ptimestamp)) != ((time_t) -1)) {
+   if((tmp = mktime(ptimestamp)) != PM_TIME_INVALID) {
*time = tmp;
} else {
ret = NULL;
diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index 52d1f03..c4aed22 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -39,6 +39,7 @@
#include util/list.h
#include util/log.h
#include util/stringlist.h
+#include util/time.h
#include error.h
#include pacman.h
#include util.h
@@ -484,7 +485,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
} else {
snprintf(src, PATH_MAX, %s://%s%s%s, server-protocol, server-server, 
server-path, fn);
}
-   if(mtime1  *mtime1 != ((time_t) -1)) {
+   if(mtime1  *mtime1 != 
PM_TIME_INVALID) {
fmtime1 = *gmtime(mtime1);
}
if(!HttpGet(server-server, output, src, fsz, control, (pm_dloffset ? 
*pm_dloffset:0),
@@ -505,7 +506,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
}
} else {
if(mtime2) {
-   if((*mtime2 = 
mktime(fmtime2)) == ((time_t) -1)) {
+   if((*mtime2 = 
mktime(fmtime2)) == PM_TIME_INVALID) {
_pacman_log(PM_LOG_WARNING, _(failed to get mtime for %s\n), fn);
}
}
diff --git a/lib/libpacman/util/time.c b/lib/libpacman/util/time.c
index 17d16b3..bd51514 100644
--- a/lib/libpacman/util/time.c
+++ b/lib/libpacman/util/time.c
@@ -51,7 +51,7 @@ struct tm *_pacman_localtime(const time_t *timep)
time_t now;

if(timep == NULL 
-   (now = time(NULL)) != ((time_t) -1)) {
+   (now = time(NULL)) != PM_TIME_INVALID) {
timep = now;
}
return localtime(timep);
diff --git a/lib/libpacman/util/time.h b/lib/libpacman/util/time.h
index a482976..51c0b55 100644
--- a/lib/libpacman/util/time.h
+++ b/lib/libpacman/util/time.h
@@ -23,6 +23,8 @@

#include time.h

+#define PM_TIME_INVALID ((time_t) -1)
+
/* Return the localtime for timep. If timep is NULL, return the conversion for 
time(NULL) (libc returns NULL instead).
*/
struct tm *_pacman_localtime(const time_t *timep);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add util/time.{c, h} utilities.

2013-11-13 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=82190f3cf971d5483867b0969d1e9fe4946cb65c

commit 82190f3cf971d5483867b0969d1e9fe4946cb65c
Author: Michel Hermier herm...@frugalware.org
Date:   Wed Nov 13 18:48:27 2013 +0100

libpacman: Add util/time.{c,h} utilities.

diff --git a/lib/libpacman/Makefile.am b/lib/libpacman/Makefile.am
index 7c06423..b9e19d1 100644
--- a/lib/libpacman/Makefile.am
+++ b/lib/libpacman/Makefile.am
@@ -27,7 +27,8 @@ PACKAGE_TARGETS = \
UTIL_TARGETS = \
util/list.c \
util/log.c \
-   util/stringlist.c
+   util/stringlist.c \
+   util/time.c

TARGETS = \
$(DB_TARGETS) \
diff --git a/lib/libpacman/util/time.c b/lib/libpacman/util/time.c
new file mode 100644
index 000..17d16b3
--- /dev/null
+++ b/lib/libpacman/util/time.c
@@ -0,0 +1,70 @@
+/*
+ *  time.c
+ *
+ *  Copyright (c) 2013 by Michel Hermier herm...@frugalware.org
+ *
+ *  This program 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 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ *  USA.
+ */
+
+#include config.h
+
+#ifndef __USE_XOPEN2K8
+#define __USE_XOPEN2K8
+#endif
+
+#include locale.h
+
+/* pacman-g2 */
+#include util/time.h
+
+#include util.h
+
+/* Return the C locale
+ */
+static
+locale_t _pacman_locale_c(void)
+{
+   static locale_t locale_c = NULL;
+
+   if(locale_c == NULL) {
+   locale_c = newlocale(LC_ALL_MASK, C, NULL);
+   /* BUG_ON(locale_c == NULL); */
+   }
+   return locale_c;
+}
+
+struct tm *_pacman_localtime(const time_t *timep)
+{
+   time_t now;
+
+   if(timep == NULL 
+   (now = time(NULL)) != ((time_t) -1)) {
+   timep = now;
+   }
+   return localtime(timep);
+}
+
+size_t _pacman_strftime_lc(char *s, size_t max, const char *format, const 
struct tm *tm)
+{
+   return strftime_l(s, max, format, tm, _pacman_locale_c());
+}
+
+char *_pacman_strptime_lc(const char *s, const char *format, struct tm *tm)
+{
+   return strptime_l(s, format, tm, _pacman_locale_c());
+}
+
+/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util/time.h b/lib/libpacman/util/time.h
new file mode 100644
index 000..a482976
--- /dev/null
+++ b/lib/libpacman/util/time.h
@@ -0,0 +1,40 @@
+/*
+ *  time.h
+ *
+ *  Copyright (c) 2013 by Michel Hermier herm...@frugalware.org
+ *
+ *  This program 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 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ *  USA.
+ */
+#ifndef _PACMAN_TIME_H
+#define _PACMAN_TIME_H
+
+#include time.h
+
+/* Return the localtime for timep. If timep is NULL, return the conversion for 
time(NULL) (libc returns NULL instead).
+ */
+struct tm *_pacman_localtime(const time_t *timep);
+
+/* _lc means localised C */
+size_t _pacman_strftime_lc(char *s, size_t max, const char *format, const 
struct tm *tm);
+char *_pacman_strptime_lc(const char *s, const char *format, struct tm *tm);
+
+#define PM_RFC1123_FORMAT %a, %d %b %Y %H:%M:%S %z
+#define _pacman_strftime_rfc1123_lc(s, max, tm) _pacman_strftime_lc((s), 
(max), PM_RFC1123_FORMAT, (tm))
+#define _pacman_strptime_rfc1123_lc(s, tm) _pacman_strptime_lc((s), 
PM_RFC1123_FORMAT, (tm))
+
+#endif /* _PACMAN_TIME_H */
+
+/* vim: set ts=2 sw=2 noet: */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove some warnings.

2013-11-13 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f97bf1ac1114edefd8394d9b3e2927deb4922a7f

commit f97bf1ac1114edefd8394d9b3e2927deb4922a7f
Author: Michel Hermier herm...@frugalware.org
Date:   Wed Nov 13 17:00:15 2013 +0100

libpacman: Remove some warnings.

diff --git a/lib/libpacman/add.c b/lib/libpacman/add.c
index d061c72..a00b5df 100644
--- a/lib/libpacman/add.c
+++ b/lib/libpacman/add.c
@@ -45,6 +45,7 @@
#include db/fakedb.h
#include hash/md5.h
#include hash/sha1.h
+#include io/archive.h
#include util/list.h
#include util/log.h
#include util/stringlist.h
@@ -120,7 +121,7 @@ int _pacman_add_addtarget(pmtrans_t *trans, const char 
*name)
if(_pacman_versioncmp(pkg-version, pkg_new-version)  0) {
_pacman_log(PM_LOG_WARNING, _(replacing older version %s-%s by %s in target 
list),
pkg-name, pkg-version, pkg_new-version);
-   _pacman_ptrswap(i-data, pkg_new);
+   _pacman_ptrswap(i-data, (void **)pkg_new);
} else {
_pacman_log(PM_LOG_WARNING, _(newer version %s-%s is in the target list -- 
skipping),
pkg-name, pkg-version, pkg_new-version);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove unused DB_O_CREATE definition.

2013-11-13 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=868ce6600b36b58838b0dac5047a14e86297625e

commit 868ce6600b36b58838b0dac5047a14e86297625e
Author: Michel Hermier herm...@frugalware.org
Date:   Wed Nov 13 12:44:34 2013 +0100

libpacman: Remove unused DB_O_CREATE definition.

diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index d0e8dbb..cdc3a1b 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -36,8 +36,6 @@
#define INFRQ_SCRIPLET 0x08
#define INFRQ_ALL  0xFF

-#define DB_O_CREATE 0x01
-
typedef struct __pmdb_ops_t pmdb_ops_t;

struct __pmdb_ops_t {
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Move syncdb update code from pacman.c to syncdb.c.

2013-11-13 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=763343fc2ac792d9c26e3c3eaff968aae428f8eb

commit 763343fc2ac792d9c26e3c3eaff968aae428f8eb
Author: Michel Hermier herm...@frugalware.org
Date:   Wed Nov 13 18:00:45 2013 +0100

libpacman: Move syncdb update code from pacman.c to syncdb.c.

diff --git a/lib/libpacman/db/syncdb.c b/lib/libpacman/db/syncdb.c
index ebbcd44..75567c4 100644
--- a/lib/libpacman/db/syncdb.c
+++ b/lib/libpacman/db/syncdb.c
@@ -42,15 +42,18 @@
#include db/syncdb.h

#include db/localdb_files.h
+#include db/syncdb.h
#include io/archive.h
#include util/log.h
#include util/stringlist.h
#include util.h
+#include cache.h
#include db.h
#include package.h
#include pacman.h
#include error.h
#include handle.h
+#include server.h

static
int suffixcmp(const char *str, const char *suffix)
@@ -87,6 +90,57 @@ pmlist_t *_pacman_syncdb_test(pmdb_t *db)
return _pacman_list_new();
}

+int _pacman_syncdb_update(pmdb_t *db, int force)
+{
+   char path[PATH_MAX], dirpath[PATH_MAX];
+   pmlist_t *files = NULL;
+   char newmtime[16] = ;
+   char lastupdate[16] = ;
+   int ret, updated=0;
+
+   if(!force) {
+   /* get the lastupdate time */
+   _pacman_db_getlastupdate(db, lastupdate);
+   if(_pacman_strempty(lastupdate)) {
+   _pacman_log(PM_LOG_DEBUG, _(failed to get lastupdate 
time for %s (no big deal)\n), db-treename);
+   }
+   }
+
+   /* build a one-element list */
+   snprintf(path, PATH_MAX, %s PM_EXT_DB, db-treename);
+   files = _pacman_stringlist_append(files, path);
+
+   snprintf(path, PATH_MAX, %s%s, handle-root, handle-dbpath);
+
+   ret = _pacman_downloadfiles_forreal(db-servers, path, files, 
lastupdate, newmtime, 0);
+   FREELIST(files);
+   if(ret != 0) {
+   if(ret == -1) {
+   _pacman_log(PM_LOG_DEBUG, _(failed to sync db: %s 
[%d]\n),  pacman_strerror(ret), ret);
+   pm_errno = PM_ERR_DB_SYNC;
+   }
+   return 1; /* Means up2date */
+   } else {
+   if(!_pacman_strempty(newmtime)) {
+   _pacman_log(PM_LOG_DEBUG, _(sync: new mtime for %s: 
%s\n), db-treename, newmtime);
+   updated = 1;
+   }
+   snprintf(dirpath, PATH_MAX, %s%s/%s, handle-root, 
handle-dbpath, db-treename);
+   snprintf(path, PATH_MAX, %s%s/%s PM_EXT_DB, handle-root, 
handle-dbpath, db-treename);
+
+   /* remove the old dir */
+   _pacman_rmrf(dirpath);
+
+   /* Cache needs to be rebuild */
+   _pacman_db_free_pkgcache(db);
+
+   if(updated) {
+   _pacman_db_setlastupdate(db, newmtime);
+   }
+   }
+   return 0;
+}
+
static
int _pacman_syncdb_open(pmdb_t *db, int flags, struct tm *timestamp)
{
diff --git a/lib/libpacman/db/syncdb.h b/lib/libpacman/db/syncdb.h
index 47f3c30..3456d76 100644
--- a/lib/libpacman/db/syncdb.h
+++ b/lib/libpacman/db/syncdb.h
@@ -25,6 +25,8 @@

const pmdb_ops_t _pacman_syncdb_ops;

+int _pacman_syncdb_update(pmdb_t *db, int force);
+
#endif /* _PACMAN_SYNCDB_H */

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 2db2f78..bb122fa 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -315,11 +315,7 @@ int pacman_db_setserver(pmdb_t *db, char *url)
*/
int pacman_db_update(int force, pmdb_t *db)
{
-   char path[PATH_MAX], dirpath[PATH_MAX];
-   pmlist_t *files = NULL;
-   char newmtime[16] = ;
-   char lastupdate[16] = ;
-   int ret, updated=0, status=0;
+   int status=0;

/* Sanity checks */
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
@@ -335,48 +331,7 @@ int pacman_db_update(int force, pmdb_t *db)
RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
}

-   if(!force) {
-   /* get the lastupdate time */
-   _pacman_db_getlastupdate(db, lastupdate);
-   if(_pacman_strempty(lastupdate)) {
-   _pacman_log(PM_LOG_DEBUG, _(failed to get lastupdate 
time for %s (no big deal)\n), db-treename);
-   }
-   }
-
-   /* build a one-element list */
-   snprintf(path, PATH_MAX, %s PM_EXT_DB, db-treename);
-   files = _pacman_stringlist_append(files, path);
-
-   snprintf(path, PATH_MAX, %s%s, handle-root, handle-dbpath);
-
-   ret = _pacman_downloadfiles_forreal(db-servers, path, files, 
lastupdate, newmtime, 0);
-   FREELIST(files);
-   if(ret != 0) {
-   if(ret == -1) {
-   _pacman_log(PM_LOG_DEBUG, _(failed to sync db: %s 
[%d]\n),  pacman_strerror(ret), ret);
-   pm_errno = PM_ERR_DB_SYNC;
-   }
-   status = 1;
-   goto rmlck;
-   } else {
-   if(!_pacman_strempty(newmtime

[Frugalware-git] pacman-g2: libpacman: Remove magic size for ftp mdtm strings in the code.

2013-11-13 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=181ed07df0110342970086109b30d36787dda500

commit 181ed07df0110342970086109b30d36787dda500
Author: Michel Hermier herm...@frugalware.org
Date:   Wed Nov 13 21:49:51 2013 +0100

libpacman: Remove magic size for ftp mdtm strings in the code.

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index cee5097..370e4c6 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -194,7 +194,7 @@ int _pacman_db_gettimestamp(pmdb_t *db, time_t *timestamp)
if(db-ops-gettimestamp) {
return db-ops-gettimestamp(db, timestamp);
} else {
-   char buffer[16];
+   char buffer[PM_FMT_MDTM_MAX];

if(_pacman_db_getlastupdate(db, buffer) == 0 
_pacman_ftp_strpmdtm(buffer, timestamp) != NULL) {
@@ -208,7 +208,7 @@ int _pacman_db_gettimestamp(pmdb_t *db, time_t *timestamp)
*/
int _pacman_db_settimestamp(pmdb_t *db, const time_t *timestamp)
{
-   char buffer[16];
+   char buffer[PM_FMT_MDTM_MAX];

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));

diff --git a/lib/libpacman/io/ftp.h b/lib/libpacman/io/ftp.h
index e2f08c7..9eeae4a 100644
--- a/lib/libpacman/io/ftp.h
+++ b/lib/libpacman/io/ftp.h
@@ -23,6 +23,8 @@

#include time.h

+#define PM_FMT_MDTM_MAX 64
+
size_t _pacman_ftp_strfmdtm(char *s, size_t max, const time_t *time);
char *_pacman_ftp_strpmdtm(const char *s, time_t *time);

diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index 3087f2c..7d2e22c 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -385,7 +385,8 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
}
/* check mtimes */
if(mtime1) {
-   char fmtime[64];
+   char fmtime[PM_FMT_MDTM_MAX];
+
if(!FtpModDate(fn, fmtime, sizeof(fmtime)-1, control)) {
_pacman_log(PM_LOG_WARNING, _(failed to get mtime for %s\n), fn);
} else {
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add a flag parameter to pmdb_t::open callback.

2013-11-13 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=196042f4a956abc8fa12ca2715e6f9d9f53e62ad

commit 196042f4a956abc8fa12ca2715e6f9d9f53e62ad
Author: Michel Hermier herm...@frugalware.org
Date:   Wed Nov 13 17:01:32 2013 +0100

libpacman: Add a flag parameter to pmdb_t::open callback.

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index ab6859d..63e6d70 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -162,13 +162,14 @@ pmlist_t *_pacman_db_test(pmdb_t *db)
return db-ops-test(db);
}

-int _pacman_db_open(pmdb_t *db)
+int _pacman_db_open(pmdb_t *db, int flags)
{
int ret = 0;

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
+   ASSERT(flags == 0, RET_ERR(PM_ERR_DB_OPEN, -1)); /* No flags are 
supported for now */

-   ret = db-ops-open(db, db-cache_timestamp);
+   ret = db-ops-open(db, flags, db-cache_timestamp);
if(ret == 0  _pacman_db_getlastupdate(db, db-lastupdate) == -1) {
db-lastupdate[0] = '\0';
}
@@ -378,7 +379,7 @@ pmdb_t *_pacman_db_register(const char *treename, 
pacman_cb_db_register callback
}

_pacman_log(PM_LOG_DEBUG, _(opening database '%s'), db-treename);
-   if(_pacman_db_open(db) == -1) {
+   if(_pacman_db_open(db, 0) == -1) {
_pacman_db_free(db);
RET_ERR(PM_ERR_DB_OPEN, NULL);
}
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index cdc3a1b..3ec6407 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -40,7 +40,7 @@ typedef struct __pmdb_ops_t pmdb_ops_t;

struct __pmdb_ops_t {
pmlist_t *(*test)(pmdb_t *db);
-   int (*open)(pmdb_t *db, struct tm *timestamp);
+   int (*open)(pmdb_t *db, int flags, struct tm *timestamp);
int (*close)(pmdb_t *db);

int (*gettimestamp)(pmdb_t *db, struct tm *timestamp);
@@ -75,7 +75,7 @@ pmlist_t *_pacman_db_search(pmdb_t *db, pmlist_t *needles);

/* Prototypes for backends functions */
pmlist_t *_pacman_db_test(pmdb_t *db);
-int _pacman_db_open(pmdb_t *db);
+int _pacman_db_open(pmdb_t *db, int flags);
int _pacman_db_close(pmdb_t *db);
int _pacman_db_gettimestamp(pmdb_t *db, struct tm *timestamp);
int _pacman_db_settimestamp(pmdb_t *db, const struct tm *timestamp);
diff --git a/lib/libpacman/db/localdb.c b/lib/libpacman/db/localdb.c
index 3ec7737..608b1eb 100644
--- a/lib/libpacman/db/localdb.c
+++ b/lib/libpacman/db/localdb.c
@@ -107,7 +107,7 @@ pmlist_t *_pacman_localdb_test(pmdb_t *db)
}

static
-int _pacman_localdb_open(pmdb_t *db, struct tm *timestamp)
+int _pacman_localdb_open(pmdb_t *db, int flags, struct tm *timestamp)
{
db-handle = opendir(db-path);
ASSERT(db-handle != NULL, RET_ERR(PM_ERR_DB_OPEN, -1));
diff --git a/lib/libpacman/db/syncdb.c b/lib/libpacman/db/syncdb.c
index 8901db3..ebbcd44 100644
--- a/lib/libpacman/db/syncdb.c
+++ b/lib/libpacman/db/syncdb.c
@@ -88,7 +88,7 @@ pmlist_t *_pacman_syncdb_test(pmdb_t *db)
}

static
-int _pacman_syncdb_open(pmdb_t *db, struct tm *timestamp)
+int _pacman_syncdb_open(pmdb_t *db, int flags, struct tm *timestamp)
{
struct stat buf;
char dbpath[PATH_MAX];
@@ -120,7 +120,7 @@ static
int _pacman_syncdb_rewind(pmdb_t *db)
{
_pacman_syncdb_close(db);
-   return _pacman_syncdb_open(db, NULL);
+   return _pacman_syncdb_open(db, 0, NULL);
}

static
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Use _pacman_db_settimestamp in pacman_trans_release.

2013-11-13 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=4a11c6535a22cc130ff61c8c85af366184f4bea0

commit 4a11c6535a22cc130ff61c8c85af366184f4bea0
Author: Michel Hermier herm...@frugalware.org
Date:   Wed Nov 13 08:24:33 2013 +0100

libpacman: Use _pacman_db_settimestamp in pacman_trans_release.

diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index a8fee32..2db2f78 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -793,7 +793,6 @@ int pacman_trans_commit(pmlist_t **data)
int pacman_trans_release()
{
pmtrans_t *trans;
-   char lastupdate[15] = ;
time_t t;

/* Sanity checks */
@@ -818,8 +817,7 @@ int pacman_trans_release()
FREETRANS(handle-trans);

t = time(NULL);
-   strftime(lastupdate, 15, %Y%m%d%H%M%S, localtime(t));
-   _pacman_db_setlastupdate(handle-db_local, lastupdate);
+   _pacman_db_settimestamp(handle-db_local, localtime(t));

if(_pacman_handle_unlock(handle) != 0) {
return -1;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make mtime2 a time_t in _pacman_downloadfiles_forreal.

2013-11-13 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=1d4cbea36ccc8a72914c2d0ab4ae33bf19d07464

commit 1d4cbea36ccc8a72914c2d0ab4ae33bf19d07464
Author: Michel Hermier herm...@frugalware.org
Date:   Wed Nov 13 22:30:42 2013 +0100

libpacman: Make mtime2 a time_t in _pacman_downloadfiles_forreal.

diff --git a/lib/libpacman/db/syncdb.c b/lib/libpacman/db/syncdb.c
index 7208ffd..85a16c8 100644
--- a/lib/libpacman/db/syncdb.c
+++ b/lib/libpacman/db/syncdb.c
@@ -94,7 +94,7 @@ int _pacman_syncdb_update(pmdb_t *db, int force)
{
char path[PATH_MAX], dirpath[PATH_MAX];
pmlist_t *files = NULL;
-   char newmtime[16] = ;
+   time_t newmtime = (time_t) -1;
char lastupdate[16] = ;
int ret, updated=0;

@@ -112,7 +112,7 @@ int _pacman_syncdb_update(pmdb_t *db, int force)

snprintf(path, PATH_MAX, %s%s, handle-root, handle-dbpath);

-   ret = _pacman_downloadfiles_forreal(db-servers, path, files, 
lastupdate, newmtime, 0);
+   ret = _pacman_downloadfiles_forreal(db-servers, path, files, 
lastupdate, newmtime, 0);
FREELIST(files);
if(ret != 0) {
if(ret == -1) {
@@ -121,7 +121,7 @@ int _pacman_syncdb_update(pmdb_t *db, int force)
}
return 1; /* Means up2date */
} else {
-   if(!_pacman_strempty(newmtime)) {
+   if(newmtime != ((time_t) -1)) {
_pacman_log(PM_LOG_DEBUG, _(sync: new mtime for %s: %s\n), db-treename, 
newmtime);
updated = 1;
}
@@ -135,7 +135,7 @@ int _pacman_syncdb_update(pmdb_t *db, int force)
_pacman_db_free_pkgcache(db);

if(updated) {
-   _pacman_db_setlastupdate(db, newmtime);
+   _pacman_db_settimestamp(db, newmtime);
}
}
return 0;
diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index 7d2e22c..d454f98 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -35,6 +35,7 @@
/* pacman-g2 */
#include server.h

+#include io/ftp.h
#include util/list.h
#include util/log.h
#include util/stringlist.h
@@ -154,7 +155,7 @@ int _pacman_downloadfiles(pmlist_t *servers, const char 
*localpath, pmlist_t *fi
* -1 on error
*/
int _pacman_downloadfiles_forreal(pmlist_t *servers, const char *localpath,
-   pmlist_t *files, const char *mtime1, char *mtime2, int skip)
+   pmlist_t *files, const char *mtime1, time_t *mtime2, int skip)
{
int fsz;
netbuf *control = NULL;
@@ -398,8 +399,10 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
complete = _pacman_list_add(complete, fn);
} else {
if(mtime2) {
-   
strncpy(mtime2, fmtime, 15); /* MMDDHHMMSS (=14b) */
-   
mtime2[14] = '\0';
+   
if(_pacman_ftp_strpmdtm(fmtime, mtime2) == NULL) {
+   
_pacman_log(PM_LOG_WARNING, _(failed to get mtime for %s\n), fn);
+   
*mtime2 = (time_t) -1;
+   }
}
}
}
@@ -501,7 +504,6 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
fmtime1.tm_wday = diff+(diff = 3 ? -3 : 4);

}
-   fmtime2.tm_year = 0;
if(!HttpGet(server-server, output, src, fsz, control, (pm_dloffset ? 
*pm_dloffset:0),
(mtime1) ? fmtime1 : NULL, (mtime2) ? fmtime2 : NULL)) {
if(strstr(FtpLastResponse(control), 304)) {
@@ -520,12 +522,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
}
} else {
if(mtime2) {
-   if(fmtime2.tm_year) {
-   /* date 
conversion from rfc1123-date to MMDDHHMMSS */
-   sprintf(mtime2, 
%4d%02d%02d%02d%02d%02d,
-   
fmtime2.tm_year+1900, fmtime2.tm_mon+1, fmtime2.tm_mday,
-   
fmtime2.tm_hour, fmtime2.tm_min, fmtime2.tm_sec);
-   } else {
+   if((*mtime2 = 
mktime(fmtime2)) == ((time_t) -1)) {
_pacman_log(PM_LOG_WARNING, _(failed to get mtime for %s\n), fn);
}
}
diff --git a/lib/libpacman/server.h b/lib/libpacman/server.h
index d5bd3f1..4a96508 100644
--- a/lib/libpacman/server.h
+++ b/lib/libpacman/server.h
@@ -47,7 +47,7 @@ pmserver_t *_pacman_server_new(char *url);
void _pacman_server_free(void *data);
int _pacman_downloadfiles(pmlist_t *servers, const char *localpath, pmlist_t 
*files, int skip);
int _pacman_downloadfiles_forreal(pmlist_t *servers, const char *localpath,
-   pmlist_t *files, const char *mtime1, char *mtime2, int skip

[Frugalware-git] pacman-g2: libpacman: Use time_t instead of struct tm, first is an absolute time, while the other is a represented time.

2013-11-13 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b0febc767ba62929600734bb1c4346372892d25e

commit b0febc767ba62929600734bb1c4346372892d25e
Author: Michel Hermier herm...@frugalware.org
Date:   Wed Nov 13 19:38:39 2013 +0100

libpacman: Use time_t instead of struct tm, first is an absolute time, while 
the other is a represented time.

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index 63e6d70..a313cbf 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -48,6 +48,7 @@
#include db/syncdb.h
#include util/list.h
#include util/log.h
+#include util/time.h
#include util.h
#include error.h
#include server.h
@@ -184,7 +185,7 @@ int _pacman_db_close(pmdb_t *db)
return db-ops-close(db);
}

-int _pacman_db_gettimestamp(pmdb_t *db, struct tm *timestamp)
+int _pacman_db_gettimestamp(pmdb_t *db, time_t *timestamp)
{
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
ASSERT(timestamp != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
@@ -192,24 +193,29 @@ int _pacman_db_gettimestamp(pmdb_t *db, struct tm 
*timestamp)
if(db-ops-gettimestamp) {
return db-ops-gettimestamp(db, timestamp);
} else {
-   int ret;
char buffer[16];

-   if((ret = _pacman_db_getlastupdate(db, buffer)) == 0) {
-   memset(timestamp, 0, sizeof(struct tm));
-   strptime(buffer, %Y%m%d%H%M%S, timestamp);
+   if(_pacman_db_getlastupdate(db, buffer) == 0) {
+   struct tm ptimestamp = { 0 };
+
+   if(strptime(buffer, %Y%m%d%H%M%S, ptimestamp) != 
NULL) {
+   *timestamp = mktime(ptimestamp);
+   return 0;
+   }
}
-   return ret;
+   return -1;
}
}

-int _pacman_db_settimestamp(pmdb_t *db, const struct tm *timestamp)
+/* A NULL timestamp means now per _pacman_localtime definition.
+ */
+int _pacman_db_settimestamp(pmdb_t *db, const time_t *timestamp)
{
char buffer[16];

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));

-   strftime(buffer, sizeof(buffer), %Y%m%d%H%M%S, timestamp);
+   strftime(buffer, sizeof(buffer), %Y%m%d%H%M%S, 
_pacman_localtime(timestamp));
return _pacman_db_setlastupdate(db, buffer);
}

diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index 3ec6407..397a6f3 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -40,10 +40,10 @@ typedef struct __pmdb_ops_t pmdb_ops_t;

struct __pmdb_ops_t {
pmlist_t *(*test)(pmdb_t *db);
-   int (*open)(pmdb_t *db, int flags, struct tm *timestamp);
+   int (*open)(pmdb_t *db, int flags, time_t *timestamp);
int (*close)(pmdb_t *db);

-   int (*gettimestamp)(pmdb_t *db, struct tm *timestamp);
+   int (*gettimestamp)(pmdb_t *db, time_t *timestamp);

/* Package iterator */
int (*rewind)(pmdb_t *db);
@@ -61,7 +61,7 @@ struct __pmdb_t {
char *path;
char treename[PATH_MAX];
void *handle;
-   struct tm cache_timestamp;
+   time_t cache_timestamp;
pmlist_t *pkgcache;
pmlist_t *grpcache;
pmlist_t *servers;
@@ -77,8 +77,8 @@ pmlist_t *_pacman_db_search(pmdb_t *db, pmlist_t *needles);
pmlist_t *_pacman_db_test(pmdb_t *db);
int _pacman_db_open(pmdb_t *db, int flags);
int _pacman_db_close(pmdb_t *db);
-int _pacman_db_gettimestamp(pmdb_t *db, struct tm *timestamp);
-int _pacman_db_settimestamp(pmdb_t *db, const struct tm *timestamp);
+int _pacman_db_gettimestamp(pmdb_t *db, time_t *timestamp);
+int _pacman_db_settimestamp(pmdb_t *db, const time_t *timestamp);
int _pacman_db_rewind(pmdb_t *db);
pmpkg_t *_pacman_db_readpkg(pmdb_t *db, unsigned int inforeq);
pmpkg_t *_pacman_db_scan(pmdb_t *db, const char *target, unsigned int inforeq);
diff --git a/lib/libpacman/db/localdb.c b/lib/libpacman/db/localdb.c
index 608b1eb..86e2602 100644
--- a/lib/libpacman/db/localdb.c
+++ b/lib/libpacman/db/localdb.c
@@ -107,7 +107,7 @@ pmlist_t *_pacman_localdb_test(pmdb_t *db)
}

static
-int _pacman_localdb_open(pmdb_t *db, int flags, struct tm *timestamp)
+int _pacman_localdb_open(pmdb_t *db, int flags, time_t *timestamp)
{
db-handle = opendir(db-path);
ASSERT(db-handle != NULL, RET_ERR(PM_ERR_DB_OPEN, -1));
diff --git a/lib/libpacman/db/syncdb.c b/lib/libpacman/db/syncdb.c
index 75567c4..7208ffd 100644
--- a/lib/libpacman/db/syncdb.c
+++ b/lib/libpacman/db/syncdb.c
@@ -142,7 +142,7 @@ int _pacman_syncdb_update(pmdb_t *db, int force)
}

static
-int _pacman_syncdb_open(pmdb_t *db, int flags, struct tm *timestamp)
+int _pacman_syncdb_open(pmdb_t *db, int flags, time_t *timestamp)
{
struct stat buf;
char dbpath[PATH_MAX];
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index bb122fa..1599f94 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -40,6 +40,7 @@
/* pacman-g2 */
#include pacman.h

+#include db/syncdb.h
#include hash/md5.h
#include hash/sha1.h
#include util/list.h
@@ -748,7 +749,6 @@ int pacman_trans_commit(pmlist_t **data)
int pacman_trans_release()
{
pmtrans_t *trans;
-   time_t t;

/* Sanity checks

[Frugalware-git] pacman-g2: libpacman: Add ftp helper to parse mdtm formated strings.

2013-11-13 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=83759db780a04fd902da1996063d1e9418979770

commit 83759db780a04fd902da1996063d1e9418979770
Author: Michel Hermier herm...@frugalware.org
Date:   Wed Nov 13 21:35:04 2013 +0100

libpacman: Add ftp helper to parse mdtm formated strings.

diff --git a/lib/libpacman/Makefile.am b/lib/libpacman/Makefile.am
index b9e19d1..6e631bd 100644
--- a/lib/libpacman/Makefile.am
+++ b/lib/libpacman/Makefile.am
@@ -19,7 +19,8 @@ HASH_TARGETS = \
hash/sha1.c

IO_TARGETS = \
-   io/archive.c
+   io/archive.c \
+   io/ftp.c

PACKAGE_TARGETS = \
package/pkginfo.c
diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index a313cbf..cee5097 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -46,6 +46,7 @@

#include db/localdb.h
#include db/syncdb.h
+#include io/ftp.h
#include util/list.h
#include util/log.h
#include util/time.h
@@ -195,13 +196,9 @@ int _pacman_db_gettimestamp(pmdb_t *db, time_t *timestamp)
} else {
char buffer[16];

-   if(_pacman_db_getlastupdate(db, buffer) == 0) {
-   struct tm ptimestamp = { 0 };
-
-   if(strptime(buffer, %Y%m%d%H%M%S, ptimestamp) != 
NULL) {
-   *timestamp = mktime(ptimestamp);
-   return 0;
-   }
+   if(_pacman_db_getlastupdate(db, buffer) == 0 
+   _pacman_ftp_strpmdtm(buffer, timestamp) != NULL) {
+   return 0;
}
return -1;
}
@@ -215,7 +212,7 @@ int _pacman_db_settimestamp(pmdb_t *db, const time_t 
*timestamp)

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));

-   strftime(buffer, sizeof(buffer), %Y%m%d%H%M%S, 
_pacman_localtime(timestamp));
+   _pacman_ftp_strfmdtm(buffer, sizeof(buffer), timestamp);
return _pacman_db_setlastupdate(db, buffer);
}

diff --git a/lib/libpacman/io/ftp.c b/lib/libpacman/io/ftp.c
new file mode 100644
index 000..373084f
--- /dev/null
+++ b/lib/libpacman/io/ftp.c
@@ -0,0 +1,57 @@
+/*
+ *  ftp.c
+ *
+ *  Copyright (c) 2013 by Michel Hermier herm...@frugalware.org
+ *
+ *  This program 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 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ *  USA.
+ */
+
+#include config.h
+
+#include stdio.h
+
+#include io/ftp.h
+
+#include util/time.h
+#include util.h
+
+#define PM_FTP_MDTM_FORMAT %Y%m%d%H%M%S
+
+size_t _pacman_ftp_strfmdtm(char *s, size_t max, const time_t *time)
+{
+   return strftime(s, max, PM_FTP_MDTM_FORMAT, _pacman_localtime(time));
+}
+
+char *_pacman_ftp_strpmdtm(const char *s, time_t *time)
+{
+   char *ret;
+   struct tm ptimestamp = { 0 };
+
+   ASSERT(time != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
+
+   if((ret = strptime(s, PM_FTP_MDTM_FORMAT, ptimestamp)) != NULL) {
+   time_t tmp;
+
+   if((tmp = mktime(ptimestamp)) != ((time_t) -1)) {
+   *time = tmp;
+   } else {
+   ret = NULL;
+   }
+   }
+   return ret;
+}
+
+/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/io/ftp.h b/lib/libpacman/io/ftp.h
new file mode 100644
index 000..e2f08c7
--- /dev/null
+++ b/lib/libpacman/io/ftp.h
@@ -0,0 +1,31 @@
+/*
+ *  ftp.h
+ *
+ *  Copyright (c) 2013 by Michel Hermier herm...@frugalware.org
+ *
+ *  This program 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 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ *  USA.
+ */
+#ifndef _PACMAN_FTP_H
+#define _PACMAN_FTP_H
+
+#include time.h
+
+size_t _pacman_ftp_strfmdtm(char *s, size_t max, const time_t *time);
+char *_pacman_ftp_strpmdtm(const char *s, time_t *time);
+
+#endif /* _PACMAN_FTP_H */
+
+/* vim: set ts=2 sw=2 noet

[Frugalware-git] pacman-g2: libpacman: Use _pacman_localtime in _pacman_vlogaction.

2013-11-13 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9bcaddf14101a631aad699b9f65f978361dc25fb

commit 9bcaddf14101a631aad699b9f65f978361dc25fb
Author: Michel Hermier herm...@frugalware.org
Date:   Wed Nov 13 18:49:17 2013 +0100

libpacman: Use _pacman_localtime in _pacman_vlogaction.

diff --git a/lib/libpacman/util/log.c b/lib/libpacman/util/log.c
index 0c7d6db..9b1a02c 100644
--- a/lib/libpacman/util/log.c
+++ b/lib/libpacman/util/log.c
@@ -25,8 +25,9 @@
#include time.h

/* pacman-g2 */
-#include log.h
+#include util/log.h

+#include util/time.h
#include util.h

/* Internal library log mechanism */
@@ -69,12 +70,9 @@ void _pacman_vlogaction(unsigned char usesyslog, FILE *f, 
const char *format, va
}

if(f) {
-   time_t t;
struct tm *tm;

-   t = time(NULL);
-   tm = localtime(t);
-
+   tm = _pacman_localtime(NULL);
fprintf(f, [%02d/%02d/%02d %02d:%02d] %s\n,
tm-tm_mon+1, tm-tm_mday, tm-tm_year-100,
tm-tm_hour, tm-tm_min,
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Use _pacman_db_gettimestamp instead of _pacman_db_getlastupdate in check_olddelay.

2013-11-12 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=0640f6f0952319b48bcd5530dd10667cf619e125

commit 0640f6f0952319b48bcd5530dd10667cf619e125
Author: Michel Hermier herm...@frugalware.org
Date:   Tue Nov 12 14:53:15 2013 +0100

libpacman: Use _pacman_db_gettimestamp instead of _pacman_db_getlastupdate in 
check_olddelay.

diff --git a/lib/libpacman/sync.c b/lib/libpacman/sync.c
index 08c36bd..16d41c3 100644
--- a/lib/libpacman/sync.c
+++ b/lib/libpacman/sync.c
@@ -229,21 +229,15 @@ static int pkg_cmp(const void *p1, const void *p2)
static int check_olddelay(void)
{
pmlist_t *i;
-   char lastupdate[16] = ;
struct tm tm;

if(!handle-olddelay) {
return(0);
}

-   memset(tm,0,sizeof(struct tm));
-
for(i = handle-dbs_sync; i; i= i-next) {
pmdb_t *db = i-data;
-   if(_pacman_db_getlastupdate(db, lastupdate) == -1) {
-   continue;
-   }
-   if(strptime(lastupdate, %Y%m%d%H%M%S, tm) == NULL) {
+   if(_pacman_db_gettimestamp(db, tm) == -1) {
continue;
}
if((time(NULL)-mktime(tm))  handle-olddelay) {
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add timestamp return attribute when opening a database.

2013-11-12 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=91eeed3240de57914be6f4ab3ac2d740413923e1

commit 91eeed3240de57914be6f4ab3ac2d740413923e1
Author: Michel Hermier herm...@frugalware.org
Date:   Tue Nov 12 14:33:23 2013 +0100

libpacman: Add timestamp return attribute when opening a database.

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index c4b0851..8456eab 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -168,7 +168,7 @@ int _pacman_db_open(pmdb_t *db)

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));

-   ret = db-ops-open(db);
+   ret = db-ops-open(db, db-cache_timestamp);
if(ret == 0  _pacman_db_getlastupdate(db, db-lastupdate) == -1) {
db-lastupdate[0] = '\0';
}
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index 1a70f1a..d0e8dbb 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -42,7 +42,7 @@ typedef struct __pmdb_ops_t pmdb_ops_t;

struct __pmdb_ops_t {
pmlist_t *(*test)(pmdb_t *db);
-   int (*open)(pmdb_t *db);
+   int (*open)(pmdb_t *db, struct tm *timestamp);
int (*close)(pmdb_t *db);

int (*gettimestamp)(pmdb_t *db, struct tm *timestamp);
diff --git a/lib/libpacman/db/localdb.c b/lib/libpacman/db/localdb.c
index 235c1df..3ec7737 100644
--- a/lib/libpacman/db/localdb.c
+++ b/lib/libpacman/db/localdb.c
@@ -107,11 +107,11 @@ pmlist_t *_pacman_localdb_test(pmdb_t *db)
}

static
-int _pacman_localdb_open(pmdb_t *db)
+int _pacman_localdb_open(pmdb_t *db, struct tm *timestamp)
{
db-handle = opendir(db-path);
ASSERT(db-handle != NULL, RET_ERR(PM_ERR_DB_OPEN, -1));
-
+   _pacman_db_gettimestamp(db, timestamp);
return 0;
}

diff --git a/lib/libpacman/db/syncdb.c b/lib/libpacman/db/syncdb.c
index bc86ce7..8901db3 100644
--- a/lib/libpacman/db/syncdb.c
+++ b/lib/libpacman/db/syncdb.c
@@ -88,7 +88,7 @@ pmlist_t *_pacman_syncdb_test(pmdb_t *db)
}

static
-int _pacman_syncdb_open(pmdb_t *db)
+int _pacman_syncdb_open(pmdb_t *db, struct tm *timestamp)
{
struct stat buf;
char dbpath[PATH_MAX];
@@ -102,6 +102,7 @@ int _pacman_syncdb_open(pmdb_t *db)
if((db-handle = _pacman_archive_read_open_all_file(dbpath)) == NULL) {
RET_ERR(PM_ERR_DB_OPEN, -1);
}
+   _pacman_db_gettimestamp(db, timestamp);
return 0;
}

@@ -119,7 +120,7 @@ static
int _pacman_syncdb_rewind(pmdb_t *db)
{
_pacman_syncdb_close(db);
-   return _pacman_syncdb_open(db);
+   return _pacman_syncdb_open(db, NULL);
}

static
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Code style and warning fixes.

2013-11-12 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=0bf264f98debfcb75e47aef48f7a68e7930ae699

commit 0bf264f98debfcb75e47aef48f7a68e7930ae699
Author: Michel Hermier herm...@frugalware.org
Date:   Tue Nov 12 14:31:24 2013 +0100

libpacman: Code style and warning fixes.

diff --git a/lib/libpacman/cache.c b/lib/libpacman/cache.c
index 0a4408e..5b044f1 100644
--- a/lib/libpacman/cache.c
+++ b/lib/libpacman/cache.c
@@ -51,9 +51,7 @@ int _pacman_db_load_pkgcache(pmdb_t *db)
{
pmpkg_t *info;

-   if(db == NULL) {
-   return(-1);
-   }
+   ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));

_pacman_db_free_pkgcache(db);

@@ -76,7 +74,8 @@ int _pacman_db_load_pkgcache(pmdb_t *db)

void _pacman_db_free_pkgcache(pmdb_t *db)
{
-   if(db == NULL || db-pkgcache == NULL) {
+   ASSERT(db != NULL, pm_errno = PM_ERR_DB_NULL; return);
+   if(db-pkgcache == NULL) {
return;
}

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index af881a1..c4b0851 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -186,6 +186,7 @@ int _pacman_db_close(pmdb_t *db)
int _pacman_db_gettimestamp(pmdb_t *db, struct tm *timestamp)
{
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
+   ASSERT(timestamp != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));

if(db-ops-gettimestamp) {
return db-ops-gettimestamp(db, timestamp);
@@ -329,7 +330,6 @@ int _pacman_db_setlastupdate(pmdb_t *db, const char *ts)
return(-1);
}
fclose(fp);
-
return(0);
}

@@ -390,7 +390,6 @@ pmdb_t *_pacman_db_register(const char *treename, 
pacman_cb_db_register callback
} else {
handle-dbs_sync = _pacman_list_add(handle-dbs_sync, db);
}
-
return(db);
}
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/db/syncdb.c b/lib/libpacman/db/syncdb.c
index bf57b27..bc86ce7 100644
--- a/lib/libpacman/db/syncdb.c
+++ b/lib/libpacman/db/syncdb.c
@@ -71,7 +71,7 @@ pmpkg_t *_pacman_syncdb_pkg_new(pmdb_t *db, const struct 
archive_entry *entry, u
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL));
ASSERT(entry != NULL, return NULL);

-   dname = archive_entry_pathname(entry);
+   dname = archive_entry_pathname((struct archive_entry *)entry);
if((pkg = _pacman_pkg_new_from_filename(dname, 0)) == NULL ||
_pacman_db_read(db, inforeq, pkg) == -1) {
_pacman_log(PM_LOG_ERROR, _(invalid name for dabatase entry '%s'), dname);
diff --git a/lib/libpacman/util.c b/lib/libpacman/util.c
index 1c6a42e..5c5cd36 100644
--- a/lib/libpacman/util.c
+++ b/lib/libpacman/util.c
@@ -58,6 +58,7 @@
/* pacman-g2 */
#include util.h

+#include io/archive.h
#include util/list.h
#include util/log.h
#include trans.h
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Zero timestamp before strptime to fix potentially not re-initialised values.

2013-11-12 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e3835f165fbfb178ee8e79e09070f6cc322fed36

commit e3835f165fbfb178ee8e79e09070f6cc322fed36
Author: Michel Hermier herm...@frugalware.org
Date:   Tue Nov 12 14:51:56 2013 +0100

libpacman: Zero timestamp before strptime to fix potentially not re-initialised 
values.

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index 8456eab..ab6859d 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -195,6 +195,7 @@ int _pacman_db_gettimestamp(pmdb_t *db, struct tm 
*timestamp)
char buffer[16];

if((ret = _pacman_db_getlastupdate(db, buffer)) == 0) {
+   memset(timestamp, 0, sizeof(struct tm));
strptime(buffer, %Y%m%d%H%M%S, timestamp);
}
return ret;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Use difftime instead of arithmetic operation in check_olddelay.

2013-11-12 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=1a2cf49a8adb86de980367b3bac582badd721252

commit 1a2cf49a8adb86de980367b3bac582badd721252
Author: Michel Hermier herm...@frugalware.org
Date:   Tue Nov 12 15:01:12 2013 +0100

libpacman: Use difftime instead of arithmetic operation in check_olddelay.

diff --git a/lib/libpacman/sync.c b/lib/libpacman/sync.c
index 16d41c3..7e44932 100644
--- a/lib/libpacman/sync.c
+++ b/lib/libpacman/sync.c
@@ -240,7 +240,7 @@ static int check_olddelay(void)
if(_pacman_db_gettimestamp(db, tm) == -1) {
continue;
}
-   if((time(NULL)-mktime(tm))  handle-olddelay) {
+   if(difftime(time(NULL), mktime(tm))  handle-olddelay) {
_pacman_log(PM_LOG_WARNING, _(local copy of '%s' repo is too old), 
db-treename);
}
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add _pacman_db_gettimestamp/_pacman_db_settimestamp and pmdb_ops_t::gettimestamp new API.

2013-11-12 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=dff8b68603fd85c6504c52bb3525f9bd35002c6f

commit dff8b68603fd85c6504c52bb3525f9bd35002c6f
Author: Michel Hermier herm...@frugalware.org
Date:   Tue Nov 12 14:02:51 2013 +0100

libpacman: Add _pacman_db_gettimestamp/_pacman_db_settimestamp and 
pmdb_ops_t::gettimestamp new API.

diff --git a/lib/libpacman/db.c b/lib/libpacman/db.c
index 609d6a5..af881a1 100644
--- a/lib/libpacman/db.c
+++ b/lib/libpacman/db.c
@@ -183,6 +183,33 @@ int _pacman_db_close(pmdb_t *db)
return db-ops-close(db);
}

+int _pacman_db_gettimestamp(pmdb_t *db, struct tm *timestamp)
+{
+   ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
+
+   if(db-ops-gettimestamp) {
+   return db-ops-gettimestamp(db, timestamp);
+   } else {
+   int ret;
+   char buffer[16];
+
+   if((ret = _pacman_db_getlastupdate(db, buffer)) == 0) {
+   strptime(buffer, %Y%m%d%H%M%S, timestamp);
+   }
+   return ret;
+   }
+}
+
+int _pacman_db_settimestamp(pmdb_t *db, const struct tm *timestamp)
+{
+   char buffer[16];
+
+   ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
+
+   strftime(buffer, sizeof(buffer), %Y%m%d%H%M%S, timestamp);
+   return _pacman_db_setlastupdate(db, buffer);
+}
+
int _pacman_db_rewind(pmdb_t *db)
{
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index 7b0b0c1..1a70f1a 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -24,6 +24,7 @@
#define _PACMAN_DB_H

#include limits.h
+#include time.h

#include pacman.h

@@ -44,6 +45,8 @@ struct __pmdb_ops_t {
int (*open)(pmdb_t *db);
int (*close)(pmdb_t *db);

+   int (*gettimestamp)(pmdb_t *db, struct tm *timestamp);
+
/* Package iterator */
int (*rewind)(pmdb_t *db);
pmpkg_t *(*readpkg)(pmdb_t *db, unsigned int inforeq);
@@ -60,6 +63,7 @@ struct __pmdb_t {
char *path;
char treename[PATH_MAX];
void *handle;
+   struct tm cache_timestamp;
pmlist_t *pkgcache;
pmlist_t *grpcache;
pmlist_t *servers;
@@ -75,6 +79,8 @@ pmlist_t *_pacman_db_search(pmdb_t *db, pmlist_t *needles);
pmlist_t *_pacman_db_test(pmdb_t *db);
int _pacman_db_open(pmdb_t *db);
int _pacman_db_close(pmdb_t *db);
+int _pacman_db_gettimestamp(pmdb_t *db, struct tm *timestamp);
+int _pacman_db_settimestamp(pmdb_t *db, const struct tm *timestamp);
int _pacman_db_rewind(pmdb_t *db);
pmpkg_t *_pacman_db_readpkg(pmdb_t *db, unsigned int inforeq);
pmpkg_t *_pacman_db_scan(pmdb_t *db, const char *target, unsigned int inforeq);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Move pmtrans_t fini operations from _pacman_trans_free to _pacman_trans_fini.

2013-11-12 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d7591ac978adc4d983b75e8a8bac59c0930b523e

commit d7591ac978adc4d983b75e8a8bac59c0930b523e
Author: Michel Hermier herm...@frugalware.org
Date:   Wed Nov 13 08:17:13 2013 +0100

libpacman: Move pmtrans_t fini operations from _pacman_trans_free to 
_pacman_trans_fini.

diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c
index 527a2a4..015d91f 100644
--- a/lib/libpacman/trans.c
+++ b/lib/libpacman/trans.c
@@ -80,19 +80,6 @@ void _pacman_trans_free(pmtrans_t *trans)
return;
}

-   FREELIST(trans-targets);
-   if(trans-type == PM_TRANS_TYPE_SYNC) {
-   pmlist_t *i;
-   for(i = trans-packages; i; i = i-next) {
-   FREESYNC(i-data);
-   }
-   FREELIST(trans-packages);
-   } else {
-   FREELISTPKGS(trans-packages);
-   }
-   FREELIST(trans-skiplist);
-   FREELIST(trans-triggers);
-
_pacman_trans_fini(trans);
free(trans);
}
@@ -134,6 +121,24 @@ int _pacman_trans_init(pmtrans_t *trans, pmtranstype_t 
type, unsigned int flags,

void _pacman_trans_fini(pmtrans_t *trans)
{
+   /* Sanity checks */
+   ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
+
+   FREELIST(trans-targets);
+   if(trans-type == PM_TRANS_TYPE_SYNC) {
+   pmlist_t *i;
+   for(i = trans-packages; i; i = i-next) {
+   FREESYNC(i-data);
+   }
+   FREELIST(trans-packages);
+   } else {
+   FREELISTPKGS(trans-packages);
+   }
+   FREELIST(trans-skiplist);
+   FREELIST(trans-triggers);
+
+   memset(trans, 0, sizeof(*trans));
+   trans-state = STATE_IDLE;
}

int _pacman_trans_sysupgrade(pmtrans_t *trans)
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Vectorise handle locking out of pacman.c.

2013-11-12 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e8618fbca13394807b2b69741f93d42dce105e0a

commit e8618fbca13394807b2b69741f93d42dce105e0a
Author: Michel Hermier herm...@frugalware.org
Date:   Wed Nov 13 08:18:27 2013 +0100

libpacman: Vectorise handle locking out of pacman.c.

diff --git a/lib/libpacman/handle.c b/lib/libpacman/handle.c
index 125457f..4fd1922 100644
--- a/lib/libpacman/handle.c
+++ b/lib/libpacman/handle.c
@@ -376,4 +376,35 @@ int _pacman_handle_get_option(pmhandle_t *ph, unsigned 
char val, long *data)
return(0);
}

+int _pacman_handle_lock(pmhandle_t *handle)
+{
+   char lckpath[PATH_MAX];
+
+   ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+
+   snprintf(lckpath, PATH_MAX, %s/%s, handle-root, PM_LOCK);
+   handle-lckfd = _pacman_lckmk(lckpath);
+   if(handle-lckfd == -1) {
+   RET_ERR(PM_ERR_HANDLE_LOCK, -1);
+   }
+   return 0;
+}
+
+int _pacman_handle_unlock(pmhandle_t *handle)
+{
+   ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
+
+   if(handle-lckfd != -1) {
+   char lckpath[PATH_MAX];
+
+   close(handle-lckfd);
+   handle-lckfd = -1;
+   snprintf(lckpath, PATH_MAX, %s/%s, handle-root, PM_LOCK);
+   if(_pacman_lckrm(lckpath)) {
+   _pacman_log(PM_LOG_WARNING, _(could not remove lock 
file %s), lckpath);
+   }
+   }
+   return 0;
+}
+
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/handle.h b/lib/libpacman/handle.h
index 1b01743..ff8ed93 100644
--- a/lib/libpacman/handle.h
+++ b/lib/libpacman/handle.h
@@ -81,6 +81,8 @@ pmhandle_t *_pacman_handle_new(void);
int _pacman_handle_free(pmhandle_t *handle);
int _pacman_handle_set_option(pmhandle_t *handle, unsigned char val, unsigned 
long data);
int _pacman_handle_get_option(pmhandle_t *handle, unsigned char val, long 
*data);
+int _pacman_handle_lock(pmhandle_t *handle);
+int _pacman_handle_unlock(pmhandle_t *handle);

#endif /* _PACMAN_HANDLE_H */

diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 5044534..a8fee32 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -102,7 +102,6 @@ int pacman_initialize(const char *root)
*/
int pacman_release(void)
{
-   char path[PATH_MAX];
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));

/* free the transaction if there is any */
@@ -121,9 +120,9 @@ int pacman_release(void)
pacman_db_unregister(handle-dbs_sync-data);
}

-   /* unlock the db */
-   snprintf(path, PATH_MAX, %s/%s, handle-root, PM_LOCK);
-   _pacman_lckrm(path);
+   if(_pacman_handle_unlock(handle) != 0) {
+   return -1;
+   }

FREEHANDLE(handle);

@@ -316,7 +315,7 @@ int pacman_db_setserver(pmdb_t *db, char *url)
*/
int pacman_db_update(int force, pmdb_t *db)
{
-   char path[PATH_MAX], dirpath[PATH_MAX], lckpath[PATH_MAX];
+   char path[PATH_MAX], dirpath[PATH_MAX];
pmlist_t *files = NULL;
char newmtime[16] = ;
char lastupdate[16] = ;
@@ -328,11 +327,8 @@ int pacman_db_update(int force, pmdb_t *db)
/* Do not update a database if a transaction is on-going */
ASSERT(handle-trans == NULL, RET_ERR(PM_ERR_TRANS_NOT_NULL, -1));

-   /* lock db */
-   snprintf(lckpath, PATH_MAX, %s/%s, handle-root, PM_LOCK);
-   handle-lckfd = _pacman_lckmk(lckpath);
-   if(handle-lckfd == -1) {
-   RET_ERR(PM_ERR_HANDLE_LOCK, -1);
+   if(_pacman_handle_lock(handle) != 0) {
+   return -1;
}

if(!_pacman_list_is_in(db, handle-dbs_sync)) {
@@ -382,8 +378,8 @@ int pacman_db_update(int force, pmdb_t *db)
}

rmlck:
-   if(_pacman_lckrm(lckpath)) {
-   _pacman_log(PM_LOG_WARNING, _(could not remove lock file %s), 
path);
+   if(_pacman_handle_unlock(handle) != 0) {
+   return -1;
}
return status;
}
@@ -694,18 +690,12 @@ void *pacman_trans_getinfo(unsigned char parm)
*/
int pacman_trans_init(unsigned char type, unsigned int flags, 
pacman_trans_cb_event event, pacman_trans_cb_conv conv, 
pacman_trans_cb_progress progress)
{
-   char path[PATH_MAX];
-
/* Sanity checks */
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
-
ASSERT(handle-trans == NULL, RET_ERR(PM_ERR_TRANS_NOT_NULL, -1));

-   /* lock db */
-   snprintf(path, PATH_MAX, %s/%s, handle-root, PM_LOCK);
-   handle-lckfd = _pacman_lckmk(path);
-   if(handle-lckfd == -1) {
-   RET_ERR(PM_ERR_HANDLE_LOCK, -1);
+   if(_pacman_handle_lock(handle) != 0) {
+   return -1;
}

handle-trans = _pacman_trans_new();
@@ -803,7 +793,7 @@ int pacman_trans_commit(pmlist_t **data)
int pacman_trans_release()
{
pmtrans_t *trans;
-   char path[PATH_MAX], lastupdate[15] = ;
+   char lastupdate[15] = ;
time_t t;

/* Sanity checks */
@@ -831,16 +821,9 @@ int pacman_trans_release()
strftime(lastupdate, 15, %Y%m%d%H%M%S, localtime(t));
_pacman_db_setlastupdate(handle-db_local, lastupdate

[Frugalware-git] pacman-g2: libpacman: Remove pmtrans_t::fini, it is unused and will be unecessary in the future.

2013-11-12 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=622d139b679f47d3d75e80318de6c7f29c25c775

commit 622d139b679f47d3d75e80318de6c7f29c25c775
Author: Michel Hermier herm...@frugalware.org
Date:   Tue Nov 12 15:50:17 2013 +0100

libpacman: Remove pmtrans_t::fini, it is unused and will be unecessary in the 
future.

diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c
index eaecc21..527a2a4 100644
--- a/lib/libpacman/trans.c
+++ b/lib/libpacman/trans.c
@@ -134,9 +134,6 @@ int _pacman_trans_init(pmtrans_t *trans, pmtranstype_t 
type, unsigned int flags,

void _pacman_trans_fini(pmtrans_t *trans)
{
-   if(trans !=NULL  trans-ops != NULL  trans-ops-fini != NULL) {
-   trans-ops-fini(trans);
-   }
}

int _pacman_trans_sysupgrade(pmtrans_t *trans)
diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h
index cd121fd..bda2b87 100644
--- a/lib/libpacman/trans.h
+++ b/lib/libpacman/trans.h
@@ -40,7 +40,6 @@ enum {
};

typedef struct __pmtrans_ops_t {
-   void (*fini)(pmtrans_t *trans);
int (*addtarget)(pmtrans_t *trans, const char *name);
int (*prepare)(pmtrans_t *trans, pmlist_t **data);
int (*commit)(pmtrans_t *trans, pmlist_t **data);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Use struct tm instead of lastupdate in check_oldcache.

2013-11-12 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a195a0a1f047bb226ee10b3c1a5e214e2ba58b56

commit a195a0a1f047bb226ee10b3c1a5e214e2ba58b56
Author: Michel Hermier herm...@frugalware.org
Date:   Tue Nov 12 15:11:40 2013 +0100

libpacman: Use struct tm instead of lastupdate in check_oldcache.

diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c
index a502713..eaecc21 100644
--- a/lib/libpacman/trans.c
+++ b/lib/libpacman/trans.c
@@ -49,12 +49,12 @@
static int check_oldcache(void)
{
pmdb_t *db = handle-db_local;
-   char lastupdate[16] = ;
+   struct tm timestamp;

-   if(_pacman_db_getlastupdate(db, lastupdate) == -1) {
+   if(_pacman_db_gettimestamp(db, timestamp) == -1) {
return(-1);
}
-   if(!_pacman_strempty(db-lastupdate)  strcmp(lastupdate, 
db-lastupdate) != 0) {
+   if(difftime(mktime(timestamp), mktime(db-cache_timestamp)) != 0) {
_pacman_log(PM_LOG_DEBUG, _(cache for '%s' repo is too old), db-treename);
_pacman_db_free_pkgcache(db);
} else {
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


<    5   6   7   8   9   10   11   12   13   14   >