]> git.proxmox.com Git - libgit2.git/commitdiff
Updates from comments on OS4 compatibility pull request http://github.com/libgit2...
authorChris Young <chris@unsatisfactorysoftware.co.uk>
Thu, 14 Jun 2012 17:57:24 +0000 (18:57 +0100)
committerChris Young <chris@unsatisfactorysoftware.co.uk>
Thu, 14 Jun 2012 17:57:24 +0000 (18:57 +0100)
examples/network/Makefile
examples/network/fetch.c
include/git2/common.h
src/amiga/map.c
src/netops.c
src/path.c
src/pool.c
src/posix.h

index 708a6b1b36e0e4ebf523d5471e4490e4591e1337..17efcfdb3c846a0c8c740c68f3b1329c16d303e9 100644 (file)
@@ -3,7 +3,6 @@ default: all
 CC = gcc
 CFLAGS += -g
 CFLAGS += -I../../include -L../../build
-LIBS += -lgit2 -lpthread #-lregex
 
 OBJECTS = \
   git2.o \
@@ -12,4 +11,4 @@ OBJECTS = \
   index-pack.o
 
 all: $(OBJECTS)
-       $(CC) $(CFLAGS) -o git2 $(OBJECTS) $(LIBS)
+       $(CC) $(CFLAGS) -o git2 $(OBJECTS)
index fc4e94cfd6b3f11c7d79cdd42cede2d1034632fd..d2752124d38a0f0347144509d0189238410b2a40 100644 (file)
@@ -36,9 +36,7 @@ static void *download(void *ptr)
 
 exit:
        data->finished = 1;
-#ifndef NO_PTHREADS
        pthread_exit(&data->ret);
-#endif
 }
 
 int update_cb(const char *refname, const git_oid *a, const git_oid *b)
@@ -83,9 +81,6 @@ int fetch(git_repository *repo, int argc, char **argv)
        data.finished = 0;
        memset(&stats, 0, sizeof(stats));
 
-#ifdef NO_PTHREADS
-       download(&data);
-#else
        pthread_create(&worker, NULL, download, &data);
 
        // Loop while the worker thread is still running. Here we show processed
@@ -96,7 +91,7 @@ int fetch(git_repository *repo, int argc, char **argv)
                usleep(10000);
                printf("\rReceived %d/%d objects in %d bytes", stats.processed, stats.total, bytes);
        } while (!data.finished);
-#endif
+
        printf("\rReceived %d/%d objects in %d bytes\n", stats.processed, stats.total, bytes);
 
        // Disconnect the underlying connection to prevent from idling.
index 99018d4f53b1df56875482f1d9ecfec6bdb5af4e..1af045cffc3a20da73b67dc473799e7e4bf766f7 100644 (file)
@@ -103,8 +103,6 @@ GIT_EXTERN(int) git_strarray_copy(git_strarray *tgt, const git_strarray *src);
  */
 GIT_EXTERN(void) git_libgit2_version(int *major, int *minor, int *rev);
 
-/* GIT_EXTERN(int) p_fnmatch(const char *pattern, const char *string, int flags); */
-
 /** @} */
 GIT_END_DECL
 #endif
index d36bcbc9c3bedf6666cf587b5c37ee15bab23ed4..643e6c65d14d61beb0f04725c69ce7dba17d87fa 100755 (executable)
@@ -23,7 +23,8 @@ int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, git_off_t offs
        out->len = 0;
 
        if ((prot & GIT_PROT_WRITE) && ((flags & GIT_MAP_TYPE) == GIT_MAP_SHARED)) {
-               printf("Trying to map shared-writeable file!!!\n");
+               giterr_set(GITERR_OS, "Trying to map shared-writeable");
+               return -1;
        }
 
        if(out->data = malloc(len)) {
index 11295c5cdf35ec3b1a1ff56dccfd9fb6ce88fb33..166c9716263aa2d99360a7cc91c7d3a3e344b4a0 100644 (file)
 #include "buffer.h"
 #include "transport.h"
 
+#ifdef NO_ADDRINFO
+struct addrinfo {
+       struct hostent *ai_hostent;
+       struct servent *ai_servent;
+       struct sockaddr_in ai_addr;
+       int ai_socktype;
+       long ai_port;
+};
+#endif
+
 #ifdef GIT_WIN32
 static void net_set_error(const char *str)
 {
@@ -378,41 +388,38 @@ int gitno_connect(git_transport *t, const char *host, const char *port)
 {
 #ifndef NO_ADDRINFO
        struct addrinfo *info = NULL, *p;
-       struct addrinfo hints;
 #else
        int p;
-       struct hostent *hent;
-       struct servent *sent;
-       struct sockaddr_in saddr;
-       long port_num = 0;
 #endif
+       struct addrinfo hints;
        int ret;
        GIT_SOCKET s = INVALID_SOCKET;
-#ifndef NO_ADDRINFO
+
        memset(&hints, 0x0, sizeof(struct addrinfo));
-       hints.ai_family = AF_UNSPEC;
        hints.ai_socktype = SOCK_STREAM;
+#ifndef NO_ADDRINFO
+       hints.ai_family = AF_UNSPEC;
 
        if ((ret = getaddrinfo(host, port, &hints, &info)) < 0) {
                giterr_set(GITERR_NET, "Failed to resolve address for %s: %s", host, gai_strerror(ret));
                return -1;
        }
 #else
-       hent = gethostbyname(host);
-       sent = getservbyname(port, 0);
+       hints.ai_hostent = gethostbyname(host);
+       hints.ai_servent = getservbyname(port, 0);
        
-       if(sent)
-               port_num = sent->s_port;
+       if(hints.ai_servent)
+               hints.ai_port = hints.ai_servent->s_port;
        else
-               port_num = atol(port);
+               hints.ai_port = atol(port);
 #endif
 
 #ifndef NO_ADDRINFO
        for (p = info; p != NULL; p = p->ai_next) {
                s = socket(p->ai_family, p->ai_socktype, p->ai_protocol);
 #else
-       for (p = 0; hent->h_addr_list[p] != NULL; p++) {
-               s = socket(hent->h_addrtype, SOCK_STREAM, 0);
+       for (p = 0; hints.ai_hostent->h_addr_list[p] != NULL; p++) {
+               s = socket(hints.ai_hostent->h_addrtype, hints.ai_socktype, 0);
 #endif
                if (s == INVALID_SOCKET) {
                        net_set_error("error creating socket");
@@ -421,10 +428,10 @@ int gitno_connect(git_transport *t, const char *host, const char *port)
 #ifndef NO_ADDRINFO
                if (connect(s, p->ai_addr, (socklen_t)p->ai_addrlen) == 0)
 #else
-               memcpy(&saddr.sin_addr, hent->h_addr_list[p], hent->h_length);
-               saddr.sin_family = hent->h_addrtype;
-               saddr.sin_port = port_num;
-               if (connect(s, (struct sockaddr *)&saddr, sizeof(struct sockaddr_in)) == 0)
+               memcpy(&hints.ai_addr.sin_addr, hints.ai_hostent->h_addr_list[p], hints.ai_hostent->h_length);
+               hints.ai_addr.sin_family = hints.ai_hostent->h_addrtype;
+               hints.ai_addr.sin_port = honts.ai_port;
+               if (connect(s, (struct sockaddr *)&hints.ai_addr, sizeof(struct sockaddr_in)) == 0)
 #endif
                        break;
 
@@ -438,7 +445,7 @@ int gitno_connect(git_transport *t, const char *host, const char *port)
 #ifndef NO_ADDRINFO
                p == NULL) {
 #else
-               hent->h_addr_list[p] == NULL) {
+               hints.ai_hostent->h_addr_list[p] == NULL) {
 #endif
                giterr_set(GITERR_OS, "Failed to connect to %s", host);
                return -1;
index d48435bd85e034adf273d6cd8222f3b68b44671d..bd659f815a9609a5219bdf9e00602dcb16734a99 100644 (file)
@@ -486,14 +486,9 @@ int git_path_cmp(
 /* Taken from git.git */
 GIT_INLINE(int) is_dot_or_dotdot(const char *name)
 {
-#ifdef __amigaos4__
-       /* This is irrelevant on AmigaOS */
-       return 0;
-#else
        return (name[0] == '.' &&
                (name[1] == '\0' ||
                 (name[1] == '.' && name[2] == '\0')));
-#endif
 }
 
 int git_path_direach(
@@ -521,11 +516,7 @@ int git_path_direach(
        de_buf = git__malloc(sizeof(struct dirent));
 #endif
 
-#ifdef NO_READDIR_R
-       while (de = readdir(dir)) {
-#else
        while (p_readdir_r(dir, de_buf, de) == 0 && de != NULL) {
-#endif
                int result;
 
                if (is_dot_or_dotdot(de->d_name))
index c5414b3b6b70cf4240fd27479714ff1b85863935..63bf09ceec1bff1d0c4a77989c0dfe7ffc184223 100644 (file)
@@ -276,7 +276,7 @@ uint32_t git_pool__system_page_size(void)
                GetSystemInfo(&info);
                size = (uint32_t)info.dwPageSize;
 #elif defined(__amigaos4__)
-               size = (uint32_t)1000000; // random value
+               size = (uint32_t)4096; /* 4K as there is no global value we can query */
 #else
                size = (uint32_t)sysconf(_SC_PAGE_SIZE);
 #endif
index 6b6c53db1f8fa4141ee4d6c99fdb05f0b8de5419..cc35c52e3b543cfbe5bb4ed398182a55df8670aa 100644 (file)
@@ -86,7 +86,12 @@ extern int p_gettimeofday(struct timeval *tv, struct timezone *tz);
 #ifndef NO_READDIR_R
 #define p_readdir_r(d,e,r) readdir_r(d,e,&r)
 #else
-#define p_readdir_r(d,e,r) r = readdir(d)
+GIT_INLINE(int) p_readdir_r(DIR *dirp, struct dirent *entry, struct direct **result)
+{
+       GIT_UNUSED(entry);
+       *result = readdir(dirp);
+       return 0;
+}
 #endif
 
 #endif