[Frugalware-git] pacman-g2: libpacman: Rename _pacman_stringlist_append to f_stringlist_append.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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/.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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