block_dns.h   block_dns.h 
/*
This file is part of GNUnet.
(C) 2009 Christian Grothoff (and other contributing authors)
GNUnet 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 3, or (at your
option) any later version.
GNUnet 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 GNUnet; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
/**
* @file include/block_dns.h
* @author Philipp Toelke
*/
#ifndef _GNVPN_BLOCKDNS_H_ #ifndef _GNVPN_BLOCKDNS_H_
#define _GNVPN_BLOCKDNS_H_ #define _GNVPN_BLOCKDNS_H_
#include "gnunet_common.h" #include "gnunet_common.h"
#include "gnunet_crypto_lib.h" #include "gnunet_crypto_lib.h"
/** /**
* Bitmask describing what IP-protocols are supported by the service * Bitmask describing what IP-protocols are supported by the service
*/ */
enum GNUNET_DNS_ServiceTypes enum GNUNET_DNS_ServiceTypes
 End of changes. 1 change blocks. 
0 lines changed or deleted 24 lines changed or added


 gnunet_applications.h   gnunet_applications.h 
skipping to change at line 54 skipping to change at line 54
* Test. * Test.
*/ */
#define GNUNET_APPLICATION_TYPE_TEST 1 #define GNUNET_APPLICATION_TYPE_TEST 1
/** /**
* Internet DNS resolution (external DNS gateway). * Internet DNS resolution (external DNS gateway).
*/ */
#define GNUNET_APPLICATION_TYPE_INTERNET_RESOLVER 2 #define GNUNET_APPLICATION_TYPE_INTERNET_RESOLVER 2
/** /**
* Internet HTTP gateway (port 80). * Internet IPv4 gateway (any TCP/UDP/ICMP).
*/ */
#define GNUNET_APPLICATION_TYPE_INTERNET_HTTP_GATEWAY 3 #define GNUNET_APPLICATION_TYPE_IPV4_GATEWAY 16
/** /**
* Internet HTTPS gateway (port 443). * Internet IPv6 gateway (any TCP/UDP/ICMP).
*/ */
#define GNUNET_APPLICATION_TYPE_INTERNET_HTTPS_GATEWAY 4 #define GNUNET_APPLICATION_TYPE_IPV6_GATEWAY 17
/**
* Internet TCP gateway (any port).
*/
#define GNUNET_APPLICATION_TYPE_INTERNET_TCP_GATEWAY 5
/**
* Internet UDP gateway (any port).
*/
#define GNUNET_APPLICATION_TYPE_INTERNET_UDP_GATEWAY 6
/**
* GNUnet VPN Search Engine (searches HTTP sites hosted within GNUnet) [exa
mple]
*/
#define GNUNET_APPLICATION_TYPE_GNUNET_SEARCH 7
#if 0 /* keep Emacsens' auto-indent happy */ #if 0 /* keep Emacsens' auto-indent happy */
{ {
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
/* ifndef GNUNET_APPLICATIONS_H */ /* ifndef GNUNET_APPLICATIONS_H */
#endif #endif
 End of changes. 4 change blocks. 
20 lines changed or deleted 4 lines changed or added


 gnunet_ats_service.h   gnunet_ats_service.h 
skipping to change at line 404 skipping to change at line 404
/** /**
* Is a peer reachable? * Is a peer reachable?
*/ */
// GNUNET_ATS_AVAILABILITY_REACHABLE = 2048, // GNUNET_ATS_AVAILABILITY_REACHABLE = 2048,
/** /**
* Is there a connection established to a peer using this transport * Is there a connection established to a peer using this transport
*/ */
// GNUNET_ATS_AVAILABILITY_CONNECTED = 2049 // GNUNET_ATS_AVAILABILITY_CONNECTED = 2049
}; };
/**
* Number of ATS quality properties
*/
#define GNUNET_ATS_QualityPropertiesCount 2
/**
* ATS quality properties as array initializer
*/
#define GNUNET_ATS_QualityProperties {GNUNET_ATS_QUALITY_NET_DELAY, GNUNET_
ATS_QUALITY_NET_DISTANCE}
/**
* Number of ATS quality properties
*/
#define GNUNET_ATS_NetworkTypeCount 5
/**
* ATS quality properties as array initializer
*/
#define GNUNET_ATS_NetworkType {GNUNET_ATS_NET_UNSPECIFIED, GNUNET_ATS_NET_
LOOPBACK, GNUNET_ATS_NET_LAN, GNUNET_ATS_NET_WAN, GNUNET_ATS_NET_WLAN}
GNUNET_NETWORK_STRUCT_BEGIN GNUNET_NETWORK_STRUCT_BEGIN
/** /**
* struct used to communicate the transport's properties like cost and * struct used to communicate the transport's properties like cost and
* quality of service as well as high-level constraints on resource * quality of service as well as high-level constraints on resource
* consumption. * consumption.
* *
* +---+ * +---+
* +-----------+ Constraints | | Plugin properties +---------+ * +-----------+ Constraints | | Plugin properties +---------+
* | Highlevel |------------> |ATS| <------------------|Transport| * | Highlevel |------------> |ATS| <------------------|Transport|
skipping to change at line 521 skipping to change at line 541
* *
* @param sh handle * @param sh handle
* @param peer identity of the peer * @param peer identity of the peer
*/ */
void void
GNUNET_ATS_suggest_address_cancel (struct GNUNET_ATS_SchedulingHandle *sh, GNUNET_ATS_suggest_address_cancel (struct GNUNET_ATS_SchedulingHandle *sh,
const struct GNUNET_PeerIdentity *peer); const struct GNUNET_PeerIdentity *peer);
/** /**
* Returns where the address is located: LAN or WAN or ... * Returns where the address is located: LAN or WAN or ...
* @param sh the GNUNET_ATS_SchedulingHandle handle
* @param addr address * @param addr address
* @param addrlen address length * @param addrlen address length
* @return location as GNUNET_ATS_Information * @return location as GNUNET_ATS_Information
*/ */
struct GNUNET_ATS_Information const struct GNUNET_ATS_Information
GNUNET_ATS_address_get_type (struct GNUNET_ATS_SchedulingHandle *sh, GNUNET_ATS_address_get_type (struct GNUNET_ATS_SchedulingHandle *sh,
const struct sockaddr * addr, const struct sockaddr * addr,
socklen_t addrlen); socklen_t addrlen);
/** /**
* We have updated performance statistics for a given address. Note * We have updated performance statistics for a given address. Note
* that this function can be called for addresses that are currently * that this function can be called for addresses that are currently
* in use as well as addresses that are valid but not actively in use. * in use as well as addresses that are valid but not actively in use.
* Furthermore, the peer may not even be connected to us right now (in * Furthermore, the peer may not even be connected to us right now (in
* which case the call may be ignored or the information may be stored * which case the call may be ignored or the information may be stored
 End of changes. 3 change blocks. 
1 lines changed or deleted 24 lines changed or added


 gnunet_block_lib.h   gnunet_block_lib.h 
skipping to change at line 95 skipping to change at line 95
GNUNET_BLOCK_TYPE_DHT_HELLO = 7, GNUNET_BLOCK_TYPE_DHT_HELLO = 7,
/** /**
* Block for testing. * Block for testing.
*/ */
GNUNET_BLOCK_TYPE_TEST = 8, GNUNET_BLOCK_TYPE_TEST = 8,
/** /**
* Block for storing .gnunet-domains * Block for storing .gnunet-domains
*/ */
GNUNET_BLOCK_TYPE_DNS = 10 GNUNET_BLOCK_TYPE_DNS = 10,
/**
* Block for storing record data
*/
GNUNET_BLOCK_TYPE_GNS_NAMERECORD = 11
}; };
/** /**
* Possible ways for how a block may relate to a query. * Possible ways for how a block may relate to a query.
*/ */
enum GNUNET_BLOCK_EvaluationResult enum GNUNET_BLOCK_EvaluationResult
{ {
/** /**
* Valid result, and there may be more. * Valid result, and there may be more.
*/ */
 End of changes. 1 change blocks. 
1 lines changed or deleted 6 lines changed or added


 gnunet_common.h   gnunet_common.h 
skipping to change at line 52 skipping to change at line 52
#ifdef HAVE_STDINT_H #ifdef HAVE_STDINT_H
#include <stdint.h> #include <stdint.h>
#endif #endif
#ifdef HAVE_STDARG_H #ifdef HAVE_STDARG_H
#include <stdarg.h> #include <stdarg.h>
#endif #endif
/** /**
* Version of the API (for entire gnunetutil.so library). * Version of the API (for entire gnunetutil.so library).
*/ */
#define GNUNET_UTIL_VERSION 0x00090100 #define GNUNET_UTIL_VERSION 0x00090200
/** /**
* Named constants for return values. The following * Named constants for return values. The following
* invariants hold: "GNUNET_NO == 0" (to allow "if (GNUNET_NO)") * invariants hold: "GNUNET_NO == 0" (to allow "if (GNUNET_NO)")
* "GNUNET_OK != GNUNET_SYSERR", "GNUNET_OK != GNUNET_NO", "GNUNET_NO != GN UNET_SYSERR" * "GNUNET_OK != GNUNET_SYSERR", "GNUNET_OK != GNUNET_NO", "GNUNET_NO != GN UNET_SYSERR"
* and finally "GNUNET_YES != GNUNET_NO". * and finally "GNUNET_YES != GNUNET_NO".
*/ */
#define GNUNET_OK 1 #define GNUNET_OK 1
#define GNUNET_SYSERR -1 #define GNUNET_SYSERR -1
#define GNUNET_YES 1 #define GNUNET_YES 1
#define GNUNET_NO 0 #define GNUNET_NO 0
#define GNUNET_MIN(a,b) (((a) < (b)) ? (a) : (b)) #define GNUNET_MIN(a,b) (((a) < (b)) ? (a) : (b))
#define GNUNET_MAX(a,b) (((a) > (b)) ? (a) : (b)) #define GNUNET_MAX(a,b) (((a) > (b)) ? (a) : (b))
/* some systems use one underscore only, and mingw uses no underscore... */
#ifndef __BYTE_ORDER
#ifdef _BYTE_ORDER
#define __BYTE_ORDER _BYTE_ORDER
#else
#ifdef BYTE_ORDER
#define __BYTE_ORDER BYTE_ORDER
#endif
#endif
#endif
#ifndef __BIG_ENDIAN
#ifdef _BIG_ENDIAN
#define __BIG_ENDIAN _BIG_ENDIAN
#else
#ifdef BIG_ENDIAN
#define __BIG_ENDIAN BIG_ENDIAN
#endif
#endif
#endif
#ifndef __LITTLE_ENDIAN
#ifdef _LITTLE_ENDIAN
#define __LITTLE_ENDIAN _LITTLE_ENDIAN
#else
#ifdef LITTLE_ENDIAN
#define __LITTLE_ENDIAN LITTLE_ENDIAN
#endif
#endif
#endif
/** /**
* Endian operations * Endian operations
*/ */
# if __BYTE_ORDER == __LITTLE_ENDIAN # if __BYTE_ORDER == __LITTLE_ENDIAN
# define GNUNET_htobe16(x) __bswap_16 (x) # define GNUNET_htobe16(x) __bswap_16 (x)
# define GNUNET_htole16(x) (x) # define GNUNET_htole16(x) (x)
# define GNUNET_be16toh(x) __bswap_16 (x) # define GNUNET_be16toh(x) __bswap_16 (x)
# define GNUNET_le16toh(x) (x) # define GNUNET_le16toh(x) (x)
skipping to change at line 116 skipping to change at line 145
/** /**
* gcc-ism to get packed structs. * gcc-ism to get packed structs.
*/ */
#define GNUNET_PACKED __attribute__((packed)) #define GNUNET_PACKED __attribute__((packed))
/** /**
* gcc-ism to document unused arguments * gcc-ism to document unused arguments
*/ */
#define GNUNET_UNUSED __attribute__((unused)) #define GNUNET_UNUSED __attribute__((unused))
/**
* gcc-ism to document functions that don't return
*/
#define GNUNET_NORETURN __attribute__((noreturn))
#if __GNUC__ > 3 #if __GNUC__ > 3
/** /**
* gcc 4.x-ism to pack structures even on W32 (to be used before structs) * gcc 4.x-ism to pack structures even on W32 (to be used before structs)
*/ */
#define GNUNET_NETWORK_STRUCT_BEGIN \ #define GNUNET_NETWORK_STRUCT_BEGIN \
_Pragma("pack(push)") \ _Pragma("pack(push)") \
_Pragma("pack(1)") _Pragma("pack(1)")
/** /**
* gcc 4.x-ism to pack structures even on W32 (to be used after structs) * gcc 4.x-ism to pack structures even on W32 (to be used after structs)
skipping to change at line 286 skipping to change at line 320
* @param message what is the message (format string) * @param message what is the message (format string)
* @param ... arguments for format string * @param ... arguments for format string
*/ */
void void
GNUNET_log_from_nocheck (enum GNUNET_ErrorType kind, const char *comp, GNUNET_log_from_nocheck (enum GNUNET_ErrorType kind, const char *comp,
const char *message, ...); const char *message, ...);
#if !defined(GNUNET_CULL_LOGGING) #if !defined(GNUNET_CULL_LOGGING)
#define GNUNET_log_from(kind,comp,...) do { int log_line = __LINE__;\ #define GNUNET_log_from(kind,comp,...) do { int log_line = __LINE__;\
static int log_call_enabled = GNUNET_LOG_CALL_STATUS;\ static int log_call_enabled = GNUNET_LOG_CALL_STATUS;\
if (GN_UNLIKELY(log_call_enabled == -1))\ if ((GNUNET_EXTRA_LOGGING > 0) || ((GNUNET_ERROR_TYPE_DEBUG & (kind)) ==
log_call_enabled = GNUNET_get_log_call_status ((kind) & (~GNUNET_ERROR_ 0)) { \
TYPE_BULK), comp, __FILE__, __FUNCTION__, log_line);\ if (GN_UNLIKELY(log_call_enabled == -1))\
if (GN_UNLIKELY(skip_log > 0)) {skip_log--;}\ log_call_enabled = GNUNET_get_log_call_status ((kind) & (~GNUNET_ERRO
else {\ R_TYPE_BULK), (comp), __FILE__, __FUNCTION__, log_line); \
if (GN_UNLIKELY(log_call_enabled))\ if (GN_UNLIKELY(skip_log > 0)) {skip_log--;}\
GNUNET_log_from_nocheck (kind, comp, __VA_ARGS__);\ else {\
if (GN_UNLIKELY(log_call_enabled))\
GNUNET_log_from_nocheck ((kind), comp, __VA_ARGS__); \
}\
}\ }\
} while (0) } while (0)
#define GNUNET_log(kind,...) do { int log_line = __LINE__;\ #define GNUNET_log(kind,...) do { int log_line = __LINE__;\
static int log_call_enabled = GNUNET_LOG_CALL_STATUS;\ static int log_call_enabled = GNUNET_LOG_CALL_STATUS;\
if (GN_UNLIKELY(log_call_enabled == -1))\ if ((GNUNET_EXTRA_LOGGING > 0) || ((GNUNET_ERROR_TYPE_DEBUG & (kind)) ==
log_call_enabled = GNUNET_get_log_call_status ((kind) & (~GNUNET_ERROR_ 0)) { \
TYPE_BULK), NULL, __FILE__, __FUNCTION__, log_line);\ if (GN_UNLIKELY(log_call_enabled == -1))\
if (GN_UNLIKELY(skip_log > 0)) {skip_log--;}\ log_call_enabled = GNUNET_get_log_call_status ((kind) & (~GNUNET_ERRO
else {\ R_TYPE_BULK), NULL, __FILE__, __FUNCTION__, log_line);\
if (GN_UNLIKELY(log_call_enabled))\ if (GN_UNLIKELY(skip_log > 0)) {skip_log--;}\
GNUNET_log_nocheck (kind, __VA_ARGS__);\ else {\
if (GN_UNLIKELY(log_call_enabled))\
GNUNET_log_nocheck ((kind), __VA_ARGS__); \
}\
}\ }\
} while (0) } while (0)
#else #else
#define GNUNET_log(...) #define GNUNET_log(...)
#define GNUNET_log_from(...) #define GNUNET_log_from(...)
#endif #endif
/** /**
* Abort the process, generate a core dump if possible. * Abort the process, generate a core dump if possible.
*/ */
void void
GNUNET_abort (void); GNUNET_abort (void) GNUNET_NORETURN;
/** /**
* Ignore the next n calls to the log function. * Ignore the next n calls to the log function.
* *
* @param n number of log calls to ignore * @param n number of log calls to ignore
* @param check_reset GNUNET_YES to assert that the log skip counter is cur rently zero * @param check_reset GNUNET_YES to assert that the log skip counter is cur rently zero
*/ */
void void
GNUNET_log_skip (unsigned int n, int check_reset); GNUNET_log_skip (unsigned int n, int check_reset);
skipping to change at line 390 skipping to change at line 428
* NOT reentrant! * NOT reentrant!
* *
* @param pid the peer identity * @param pid the peer identity
* @return string form of the pid; will be overwritten by next * @return string form of the pid; will be overwritten by next
* call to GNUNET_i2s. * call to GNUNET_i2s.
*/ */
const char * const char *
GNUNET_i2s (const struct GNUNET_PeerIdentity *pid); GNUNET_i2s (const struct GNUNET_PeerIdentity *pid);
/** /**
* Convert a peer identity to a string (for printing debug messages).
* This is one of the very few calls in the entire API that is
* NOT reentrant!
*
* @param pid the peer identity
* @return string form of the pid; will be overwritten by next
* call to GNUNET_i2s.
*/
const char *
GNUNET_i2s_full (const struct GNUNET_PeerIdentity *pid);
/**
* Convert a "struct sockaddr*" (IPv4 or IPv6 address) to a string * Convert a "struct sockaddr*" (IPv4 or IPv6 address) to a string
* (for printing debug messages). This is one of the very few calls * (for printing debug messages). This is one of the very few calls
* in the entire API that is NOT reentrant! * in the entire API that is NOT reentrant!
* *
* @param addr the address * @param addr the address
* @param addrlen the length of the address * @param addrlen the length of the address
* @return nicely formatted string for the address * @return nicely formatted string for the address
* will be overwritten by next call to GNUNET_a2s. * will be overwritten by next call to GNUNET_a2s.
*/ */
const char * const char *
skipping to change at line 483 skipping to change at line 533
GNUNET_ntohll (uint64_t n); GNUNET_ntohll (uint64_t n);
/** /**
* Convert unsigned 64-bit integer to network-byte-order. * Convert unsigned 64-bit integer to network-byte-order.
* @param n the value in host byte order * @param n the value in host byte order
* @return the same value in network byte order * @return the same value in network byte order
*/ */
uint64_t uint64_t
GNUNET_htonll (uint64_t n); GNUNET_htonll (uint64_t n);
/**
* Convert double to network-byte-order.
* @param d the value in network byte order
* @return the same value in host byte order
*/
double
GNUNET_hton_double (double d);
/**
* Convert double to host-byte-order
* @param d the value in network byte order
* @return the same value in host byte order
*/
double
GNUNET_ntoh_double (double d);
/* ************************* allocation functions ****************** */ /* ************************* allocation functions ****************** */
/** /**
* Maximum allocation with GNUNET_malloc macro. * Maximum allocation with GNUNET_malloc macro.
*/ */
#define GNUNET_MAX_MALLOC_CHECKED (1024 * 1024 * 40) #define GNUNET_MAX_MALLOC_CHECKED (1024 * 1024 * 40)
/** /**
* Wrapper around malloc. Allocates size bytes of memory. * Wrapper around malloc. Allocates size bytes of memory.
* The memory will be zero'ed out. * The memory will be zero'ed out.
 End of changes. 8 change blocks. 
16 lines changed or deleted 84 lines changed or added


 gnunet_config.h   gnunet_config.h 
skipping to change at line 205 skipping to change at line 205
/* Define to 1 if you have the `getrusage' function. */ /* Define to 1 if you have the `getrusage' function. */
#define HAVE_GETRUSAGE 1 #define HAVE_GETRUSAGE 1
/* Define if the GNU gettext() function is already present or preinstalled. */ /* Define if the GNU gettext() function is already present or preinstalled. */
#define HAVE_GETTEXT 1 #define HAVE_GETTEXT 1
/* Define to 1 if you have the `gettimeofday' function. */ /* Define to 1 if you have the `gettimeofday' function. */
#define HAVE_GETTIMEOFDAY 1 #define HAVE_GETTIMEOFDAY 1
/* Define to 1 if you have the <glpk.h> header file. */ /* Define to 1 if you have the <glpk.h> header file. */
/* #undef HAVE_GLPK_H */ #define HAVE_GLPK_H 1
/* Define to 1 if `presolve' is a member of `glp_iocp'. */ /* Define to 1 if `presolve' is a member of `glp_iocp'. */
/* #undef HAVE_GLP_IOCP_PRESOLVE */ #define HAVE_GLP_IOCP_PRESOLVE 1
/* Define to 1 if you have the `gmtime' function. */ /* Define to 1 if you have the `gmtime' function. */
#define HAVE_GMTIME 1 #define HAVE_GMTIME 1
/* Define to 1 if you have the `gmtime_r' function. */ /* Define to 1 if you have the `gmtime_r' function. */
#define HAVE_GMTIME_R 1 #define HAVE_GMTIME_R 1
/* Define if you have the iconv() function. */ /* Define if you have the iconv() function. */
#define HAVE_ICONV 1 #define HAVE_ICONV 1
skipping to change at line 250 skipping to change at line 250
/* Define to 1 if you have a functional curl library. */ /* Define to 1 if you have a functional curl library. */
#define HAVE_LIBCURL 1 #define HAVE_LIBCURL 1
/* Define if you have the libdl library or equivalent. */ /* Define if you have the libdl library or equivalent. */
#define HAVE_LIBDL 1 #define HAVE_LIBDL 1
/* Define if libdlloader will be built on this platform */ /* Define if libdlloader will be built on this platform */
#define HAVE_LIBDLLOADER 1 #define HAVE_LIBDLLOADER 1
/* Have GLPK */ /* Have GLPK */
/* #undef HAVE_LIBGLPK */ #define HAVE_LIBGLPK 1
/* Define to 1 if you have the `intl' library (-lintl). */ /* Define to 1 if you have the `intl' library (-lintl). */
/* #undef HAVE_LIBINTL */ /* #undef HAVE_LIBINTL */
/* Define to 1 if you have the <libintl.h> header file. */ /* Define to 1 if you have the <libintl.h> header file. */
#define HAVE_LIBINTL_H 1 #define HAVE_LIBINTL_H 1
/* Define to 1 if you have the `kstat' library (-lkstat). */ /* Define to 1 if you have the `kstat' library (-lkstat). */
/* #undef HAVE_LIBKSTAT */ /* #undef HAVE_LIBKSTAT */
skipping to change at line 276 skipping to change at line 276
/* Define to 1 if you have the `resolv' library (-lresolv). */ /* Define to 1 if you have the `resolv' library (-lresolv). */
/* #undef HAVE_LIBRESOLV */ /* #undef HAVE_LIBRESOLV */
/* Define to 1 if you have the `rt' library (-lrt). */ /* Define to 1 if you have the `rt' library (-lrt). */
/* #undef HAVE_LIBRT */ /* #undef HAVE_LIBRT */
/* Define to 1 if you have the `socket' library (-lsocket). */ /* Define to 1 if you have the `socket' library (-lsocket). */
/* #undef HAVE_LIBSOCKET */ /* #undef HAVE_LIBSOCKET */
/* Define if you have the unistring library. */
#define HAVE_LIBUNISTRING 1
/* Define to 1 if you have the `z' library (-lz). */ /* Define to 1 if you have the `z' library (-lz). */
#define HAVE_LIBZ 1 #define HAVE_LIBZ 1
/* Define to 1 if you have the <limits.h> header file. */ /* Define to 1 if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1 #define HAVE_LIMITS_H 1
/* Define to 1 if you have the <locale.h> header file. */ /* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1 #define HAVE_LOCALE_H 1
/* Define to 1 if you have the `localtime_r' function. */ /* Define to 1 if you have the `localtime_r' function. */
skipping to change at line 706 skipping to change at line 709
/* Name of package */ /* Name of package */
#define PACKAGE "gnunet" #define PACKAGE "gnunet"
/* Define to the address where bug reports for this package should be sent. */ /* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "bug-gnunet@gnu.org" #define PACKAGE_BUGREPORT "bug-gnunet@gnu.org"
/* Define to the full name of this package. */ /* Define to the full name of this package. */
#define PACKAGE_NAME "gnunet" #define PACKAGE_NAME "gnunet"
/* Define to the full name and version of this package. */ /* Define to the full name and version of this package. */
#define PACKAGE_STRING "gnunet 0.9.1" #define PACKAGE_STRING "gnunet 0.9.2"
/* Define to the one symbol short name of this package. */ /* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "gnunet" #define PACKAGE_TARNAME "gnunet"
/* Define to the home page for this package. */ /* Define to the home page for this package. */
#define PACKAGE_URL "" #define PACKAGE_URL ""
/* Define to the version of this package. */ /* Define to the version of this package. */
#define PACKAGE_VERSION "0.9.1" #define PACKAGE_VERSION "0.9.2"
/* Define as the return type of signal handlers (`int' or `void'). */ /* Define as the return type of signal handlers (`int' or `void'). */
#define RETSIGTYPE void #define RETSIGTYPE void
/* Define to the type of arg 1 for `select'. */ /* Define to the type of arg 1 for `select'. */
#define SELECT_TYPE_ARG1 int #define SELECT_TYPE_ARG1 int
/* Define to the type of args 2, 3 and 4 for `select'. */ /* Define to the type of args 2, 3 and 4 for `select'. */
#define SELECT_TYPE_ARG234 (fd_set *) #define SELECT_TYPE_ARG234 (fd_set *)
skipping to change at line 748 skipping to change at line 751
/* Define to 1 if you have the ANSI C header files. */ /* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1 #define STDC_HEADERS 1
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1 #define TIME_WITH_SYS_TIME 1
/* Define to 1 if your <sys/time.h> declares `struct tm'. */ /* Define to 1 if your <sys/time.h> declares `struct tm'. */
/* #undef TM_IN_SYS_TIME */ /* #undef TM_IN_SYS_TIME */
/* Version number of package */ /* Version number of package */
#define VERSION "0.9.1" #define VERSION "0.9.2"
/* This is a Windows system */ /* This is a Windows system */
/* #undef WINDOWS */ /* #undef WINDOWS */
/* Define to 1 if the X Window System is missing or not being used. */ /* Define to 1 if the X Window System is missing or not being used. */
/* #undef X_DISPLAY_MISSING */ /* #undef X_DISPLAY_MISSING */
/* Number of bits in a file offset, on hosts where this is settable. */ /* Number of bits in a file offset, on hosts where this is settable. */
#define _FILE_OFFSET_BITS 64 #define _FILE_OFFSET_BITS 64
 End of changes. 7 change blocks. 
6 lines changed or deleted 9 lines changed or added


 gnunet_crypto_lib.h   gnunet_crypto_lib.h 
skipping to change at line 224 skipping to change at line 224
/** /**
* Seed a weak random generator. Only GNUNET_CRYPTO_QUALITY_WEAK-mode gener ator * Seed a weak random generator. Only GNUNET_CRYPTO_QUALITY_WEAK-mode gener ator
* can be seeded. * can be seeded.
* *
* @param seed the seed to use * @param seed the seed to use
*/ */
void void
GNUNET_CRYPTO_seed_weak_random (int32_t seed); GNUNET_CRYPTO_seed_weak_random (int32_t seed);
/** /**
* Perform an incremental step in a CRC16 (for TCP/IP) calculation.
*
* @param sum current sum, initially 0
* @param buf buffer to calculate CRC over (must be 16-bit aligned)
* @param len number of bytes in hdr, must be multiple of 2
* @return updated crc sum (must be subjected to GNUNET_CRYPTO_crc16_finish
to get actual crc16)
*/
uint32_t
GNUNET_CRYPTO_crc16_step (uint32_t sum, const void *buf, size_t len);
/**
* Convert results from GNUNET_CRYPTO_crc16_step to final crc16.
*
* @param sum cummulative sum
* @return crc16 value
*/
uint16_t
GNUNET_CRYPTO_crc16_finish (uint32_t sum);
/**
* Calculate the checksum of a buffer in one step.
*
* @param buf buffer to calculate CRC over (must be 16-bit aligned)
* @param len number of bytes in hdr, must be multiple of 2
* @return crc16 value
*/
uint16_t
GNUNET_CRYPTO_crc16_n (const void *buf, size_t len);
/**
* Compute the CRC32 checksum for the first len * Compute the CRC32 checksum for the first len
* bytes of the buffer. * bytes of the buffer.
* *
* @param buf the data over which we're taking the CRC * @param buf the data over which we're taking the CRC
* @param len the length of the buffer in bytes * @param len the length of the buffer in bytes
* @return the resulting CRC32 checksum * @return the resulting CRC32 checksum
*/ */
int32_t int32_t
GNUNET_CRYPTO_crc32_n (const void *buf, size_t len); GNUNET_CRYPTO_crc32_n (const void *buf, size_t len);
skipping to change at line 353 skipping to change at line 383
* @param block the hash code * @param block the hash code
* @param result where to store the encoding (struct GNUNET_CRYPTO_HashAsci iEncoded can be * @param result where to store the encoding (struct GNUNET_CRYPTO_HashAsci iEncoded can be
* safely cast to char*, a '\\0' termination is set). * safely cast to char*, a '\\0' termination is set).
*/ */
void void
GNUNET_CRYPTO_hash_to_enc (const GNUNET_HashCode * block, GNUNET_CRYPTO_hash_to_enc (const GNUNET_HashCode * block,
struct GNUNET_CRYPTO_HashAsciiEncoded *result); struct GNUNET_CRYPTO_HashAsciiEncoded *result);
/** /**
* Convert ASCII encoding back to GNUNET_CRYPTO_hash * Convert ASCII encoding back to GNUNET_CRYPTO_hash
*
* @param enc the encoding * @param enc the encoding
* @param enclen number of characters in 'enc' (without 0-terminator, which can be missing)
* @param result where to store the GNUNET_CRYPTO_hash code * @param result where to store the GNUNET_CRYPTO_hash code
* @return GNUNET_OK on success, GNUNET_SYSERR if result has the wrong enco ding * @return GNUNET_OK on success, GNUNET_SYSERR if result has the wrong enco ding
*/ */
int int
GNUNET_CRYPTO_hash_from_string (const char *enc, GNUNET_HashCode * result); GNUNET_CRYPTO_hash_from_string2 (const char *enc, size_t enclen,
GNUNET_HashCode * result);
/**
* Convert ASCII encoding back to GNUNET_CRYPTO_hash
* @param enc the encoding
* @param result where to store the GNUNET_CRYPTO_hash code
* @return GNUNET_OK on success, GNUNET_SYSERR if result has the wrong enco
ding
*/
#define GNUNET_CRYPTO_hash_from_string(enc, result) \
GNUNET_CRYPTO_hash_from_string2 (enc, strlen(enc), result)
/** /**
* Compute the distance between 2 hashcodes. * Compute the distance between 2 hashcodes.
* The computation must be fast, not involve * The computation must be fast, not involve
* a.a or a.e (they're used elsewhere), and * a.a or a.e (they're used elsewhere), and
* be somewhat consistent. And of course, the * be somewhat consistent. And of course, the
* result should be a positive number. * result should be a positive number.
* *
* @param a some hash code * @param a some hash code
* @param b some hash code * @param b some hash code
 End of changes. 4 change blocks. 
1 lines changed or deleted 45 lines changed or added


 gnunet_dht_service.h   gnunet_dht_service.h 
skipping to change at line 205 skipping to change at line 205
* Stop async DHT-get. Frees associated resources. * Stop async DHT-get. Frees associated resources.
* *
* @param get_handle GET operation to stop. * @param get_handle GET operation to stop.
* *
* On return get_handle will no longer be valid, caller * On return get_handle will no longer be valid, caller
* must not use again!!! * must not use again!!!
*/ */
void void
GNUNET_DHT_get_stop (struct GNUNET_DHT_GetHandle *get_handle); GNUNET_DHT_get_stop (struct GNUNET_DHT_GetHandle *get_handle);
/* *************** Extended API: monitor ******************* */
struct GNUNET_DHT_MonitorHandle;
/**
* Callback called on each request going through the DHT.
*
* @param cls Closure.
* @param mtype Type of the DHT message monitored.
* @param exp When will this value expire.
* @param key Key of the result/request.
* @param get_path Peers on reply path (or NULL if not recorded).
* @param get_path_length number of entries in get_path.
* @param put_path peers on the PUT path (or NULL if not recorded).
* @param put_path_length number of entries in get_path.
* @param desired_replication_level Desired replication level.
* @param type Type of the result/request.
* @param data Pointer to the result data.
* @param size Number of bytes in data.
*/
typedef void (*GNUNET_DHT_MonitorCB) (void *cls,
uint16_t mtype,
struct GNUNET_TIME_Absolute exp,
const GNUNET_HashCode * key,
const struct GNUNET_PeerIdentity *
get_path, unsigned int get_path_lengt
h,
const struct GNUNET_PeerIdentity *
put_path, unsigned int put_path_lengt
h,
uint32_t desired_replication_level,
enum GNUNET_DHT_RouteOption options,
enum GNUNET_BLOCK_Type type,
const void *data,
size_t size);
/**
* Start monitoring the local DHT service.
*
* @param handle Handle to the DHT service.
* @param type Type of blocks that are of interest.
* @param key Key of data of interest, NULL for all.
* @param cb Callback to process all monitored data.
* @param cb_cls Closure for cb.
*
* @return Handle to stop monitoring.
*/
struct GNUNET_DHT_MonitorHandle *
GNUNET_DHT_monitor_start (struct GNUNET_DHT_Handle *handle,
enum GNUNET_BLOCK_Type type,
const GNUNET_HashCode *key,
GNUNET_DHT_MonitorCB cb,
void *cb_cls);
/**
* Stop monitoring.
*
* @param handle The handle to the monitor request returned by monitor_star
t.
*
* On return handle will no longer be valid, caller must not use again!!!
*/
void
GNUNET_DHT_monitor_stop (struct GNUNET_DHT_MonitorHandle *handle);
#if 0 /* keep Emacsens' auto-indent happy */ #if 0 /* keep Emacsens' auto-indent happy */
{ {
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
/* gnunet_dht_service.h */ /* gnunet_dht_service.h */
 End of changes. 1 change blocks. 
0 lines changed or deleted 65 lines changed or added


 gnunet_disk_lib.h   gnunet_disk_lib.h 
skipping to change at line 28 skipping to change at line 28
Boston, MA 02111-1307, USA. Boston, MA 02111-1307, USA.
*/ */
/** /**
* @file include/gnunet_disk_lib.h * @file include/gnunet_disk_lib.h
* @brief disk IO apis * @brief disk IO apis
*/ */
#ifndef GNUNET_DISK_LIB_H #ifndef GNUNET_DISK_LIB_H
#define GNUNET_DISK_LIB_H #define GNUNET_DISK_LIB_H
/** #if WINDOWS
* Opaque handle used to access files. #define OFF_T uint64_t
*/ #else
struct GNUNET_DISK_FileHandle; #define OFF_T off_t
#endif
/** /**
* Handle used to manage a pipe. * Handle used to manage a pipe.
*/ */
struct GNUNET_DISK_PipeHandle; struct GNUNET_DISK_PipeHandle;
enum GNUNET_FILE_Type enum GNUNET_FILE_Type
{ {
GNUNET_DISK_FILE, GNUNET_PIPE GNUNET_DISK_FILE, GNUNET_PIPE
}; };
skipping to change at line 288 skipping to change at line 289
int int
GNUNET_DISK_file_test (const char *fil); GNUNET_DISK_file_test (const char *fil);
/** /**
* Move the read/write pointer in a file * Move the read/write pointer in a file
* @param h handle of an open file * @param h handle of an open file
* @param offset position to move to * @param offset position to move to
* @param whence specification to which position the offset parameter relat es to * @param whence specification to which position the offset parameter relat es to
* @return the new position on success, GNUNET_SYSERR otherwise * @return the new position on success, GNUNET_SYSERR otherwise
*/ */
off_t OFF_T
GNUNET_DISK_file_seek (const struct GNUNET_DISK_FileHandle *h, off_t offset GNUNET_DISK_file_seek (const struct GNUNET_DISK_FileHandle *h, OFF_T offset
, ,
enum GNUNET_DISK_Seek whence); enum GNUNET_DISK_Seek whence);
/** /**
* Get the size of the file (or directory) * Get the size of the file (or directory)
* of the given file (in bytes). * of the given file (in bytes).
* *
* @param filename name of the file or directory * @param filename name of the file or directory
* @param size set to the size of the file (or, * @param size set to the size of the file (or,
* in the case of directories, the sum * in the case of directories, the sum
* of all sizes of files in the directory) * of all sizes of files in the directory)
skipping to change at line 366 skipping to change at line 367
/** /**
* Get the size of an open file. * Get the size of an open file.
* *
* @param fh open file handle * @param fh open file handle
* @param size where to write size of the file * @param size where to write size of the file
* @return GNUNET_OK on success, GNUNET_SYSERR on error * @return GNUNET_OK on success, GNUNET_SYSERR on error
*/ */
int int
GNUNET_DISK_file_handle_size (struct GNUNET_DISK_FileHandle *fh, GNUNET_DISK_file_handle_size (struct GNUNET_DISK_FileHandle *fh,
off_t *size); OFF_T *size);
/** /**
* Creates an interprocess channel * Creates an interprocess channel
* @param blocking creates an asynchronous pipe if set to GNUNET_NO *
* @param blocking_read creates an asynchronous pipe for reading if set to
GNUNET_NO
* @param blocking_write creates an asynchronous pipe for writing if set to
GNUNET_NO
* @param inherit_read 1 to make read handle inheritable, 0 otherwise (NT o nly) * @param inherit_read 1 to make read handle inheritable, 0 otherwise (NT o nly)
* @param inherit_write 1 to make write handle inheritable, 0 otherwise (NT only) * @param inherit_write 1 to make write handle inheritable, 0 otherwise (NT only)
* @return handle to the new pipe, NULL on error * @return handle to the new pipe, NULL on error
*/ */
struct GNUNET_DISK_PipeHandle * struct GNUNET_DISK_PipeHandle *
GNUNET_DISK_pipe (int blocking, int inherit_read, int inherit_write); GNUNET_DISK_pipe (int blocking_read, int blocking_write, int inherit_read,
int inherit_write);
/**
* Creates a pipe object from a couple of file descriptors.
* Useful for wrapping existing pipe FDs.
*
* @param blocking_read creates an asynchronous pipe for reading if set to
GNUNET_NO
* @param blocking_write creates an asynchronous pipe for writing if set to
GNUNET_NO
* @param fd an array of two fd values. One of them may be -1 for read-only
or write-only pipes
*
* @return handle to the new pipe, NULL on error
*/
struct GNUNET_DISK_PipeHandle *
GNUNET_DISK_pipe_from_fd (int blocking_read, int blocking_write, int fd[2])
;
/** /**
* Closes an interprocess channel * Closes an interprocess channel
* @param p pipe * @param p pipe
* @return GNUNET_OK on success, GNUNET_SYSERR otherwise * @return GNUNET_OK on success, GNUNET_SYSERR otherwise
*/ */
int int
GNUNET_DISK_pipe_close (struct GNUNET_DISK_PipeHandle *p); GNUNET_DISK_pipe_close (struct GNUNET_DISK_PipeHandle *p);
/** /**
skipping to change at line 430 skipping to change at line 446
* @param result the buffer to write the result to * @param result the buffer to write the result to
* @param len the maximum number of bytes to read * @param len the maximum number of bytes to read
* @return the number of bytes read on success, GNUNET_SYSERR on failure * @return the number of bytes read on success, GNUNET_SYSERR on failure
*/ */
ssize_t ssize_t
GNUNET_DISK_file_read (const struct GNUNET_DISK_FileHandle *h, void *result , GNUNET_DISK_file_read (const struct GNUNET_DISK_FileHandle *h, void *result ,
size_t len); size_t len);
/** /**
* Read the contents of a binary file into a buffer. * Read the contents of a binary file into a buffer.
* Guarantees not to block (returns GNUNET_SYSERR and sets errno to EAGAIN
* when no data can be read).
*
* @param h handle to an open file
* @param result the buffer to write the result to
* @param len the maximum number of bytes to read
* @return the number of bytes read on success, GNUNET_SYSERR on failure
*/
ssize_t
GNUNET_DISK_file_read_non_blocking (const struct GNUNET_DISK_FileHandle * h
,
void *result, size_t len);
/**
* Read the contents of a binary file into a buffer.
* *
* @param fn file name * @param fn file name
* @param result the buffer to write the result to * @param result the buffer to write the result to
* @param len the maximum number of bytes to read * @param len the maximum number of bytes to read
* @return number of bytes read, GNUNET_SYSERR on failure * @return number of bytes read, GNUNET_SYSERR on failure
*/ */
ssize_t ssize_t
GNUNET_DISK_fn_read (const char *fn, void *result, size_t len); GNUNET_DISK_fn_read (const char *fn, void *result, size_t len);
/** /**
skipping to change at line 452 skipping to change at line 482
* @param h handle to open file * @param h handle to open file
* @param buffer the data to write * @param buffer the data to write
* @param n number of bytes to write * @param n number of bytes to write
* @return number of bytes written on success, GNUNET_SYSERR on error * @return number of bytes written on success, GNUNET_SYSERR on error
*/ */
ssize_t ssize_t
GNUNET_DISK_file_write (const struct GNUNET_DISK_FileHandle *h, GNUNET_DISK_file_write (const struct GNUNET_DISK_FileHandle *h,
const void *buffer, size_t n); const void *buffer, size_t n);
/** /**
* Write a buffer to a file, blocking, if necessary.
* @param h handle to open file
* @param buffer the data to write
* @param n number of bytes to write
* @return number of bytes written on success, GNUNET_SYSERR on error
*/
ssize_t
GNUNET_DISK_file_write_blocking (const struct GNUNET_DISK_FileHandle * h,
const void *buffer, size_t n);
/**
* Write a buffer to a file. If the file is longer than * Write a buffer to a file. If the file is longer than
* the given buffer size, it will be truncated. * the given buffer size, it will be truncated.
* *
* @param fn file name * @param fn file name
* @param buffer the data to write * @param buffer the data to write
* @param n number of bytes to write * @param n number of bytes to write
* @param mode file permissions * @param mode file permissions
* @return number of bytes written on success, GNUNET_SYSERR on error * @return number of bytes written on success, GNUNET_SYSERR on error
*/ */
ssize_t ssize_t
skipping to change at line 535 skipping to change at line 576
/** /**
* Scan a directory for files using the scheduler to run a task for * Scan a directory for files using the scheduler to run a task for
* each entry. The name of the directory must be expanded first (!). * each entry. The name of the directory must be expanded first (!).
* If a scheduler does not need to be used, GNUNET_DISK_directory_scan * If a scheduler does not need to be used, GNUNET_DISK_directory_scan
* may provide a simpler API. * may provide a simpler API.
* *
* @param prio priority to use * @param prio priority to use
* @param dirName the name of the directory * @param dirName the name of the directory
* @param callback the method to call for each file * @param callback the method to call for each file
* @param callback_cls closure for callback * @param callback_cls closure for callback
* @return GNUNET_YES if directory is not empty and 'callback'
* will be called later, GNUNET_NO otherwise, GNUNET_SYSERR on erro
r.
*/ */
void int
GNUNET_DISK_directory_iterator_start (enum GNUNET_SCHEDULER_Priority prio, GNUNET_DISK_directory_iterator_start (enum GNUNET_SCHEDULER_Priority prio,
const char *dirName, const char *dirName,
GNUNET_DISK_DirectoryIteratorCallback GNUNET_DISK_DirectoryIteratorCallback
callback, void *callback_cls); callback, void *callback_cls);
/** /**
* Create the directory structure for storing * Create the directory structure for storing
* a file. * a file.
* *
* @param filename name of a file in the directory * @param filename name of a file in the directory
skipping to change at line 595 skipping to change at line 638
/** /**
* Lock a part of a file. * Lock a part of a file.
* *
* @param fh file handle * @param fh file handle
* @param lockStart absolute position from where to lock * @param lockStart absolute position from where to lock
* @param lockEnd absolute position until where to lock * @param lockEnd absolute position until where to lock
* @param excl GNUNET_YES for an exclusive lock * @param excl GNUNET_YES for an exclusive lock
* @return GNUNET_OK on success, GNUNET_SYSERR on error * @return GNUNET_OK on success, GNUNET_SYSERR on error
*/ */
int int
GNUNET_DISK_file_lock (struct GNUNET_DISK_FileHandle *fh, off_t lockStart, GNUNET_DISK_file_lock (struct GNUNET_DISK_FileHandle *fh, OFF_T lockStart,
off_t lockEnd, int excl); OFF_T lockEnd, int excl);
/** /**
* Unlock a part of a file * Unlock a part of a file
* @param fh file handle * @param fh file handle
* @param unlockStart absolute position from where to unlock * @param unlockStart absolute position from where to unlock
* @param unlockEnd absolute position until where to unlock * @param unlockEnd absolute position until where to unlock
* @return GNUNET_OK on success, GNUNET_SYSERR on error * @return GNUNET_OK on success, GNUNET_SYSERR on error
*/ */
int int
GNUNET_DISK_file_unlock (struct GNUNET_DISK_FileHandle *fh, off_t unlockSta GNUNET_DISK_file_unlock (struct GNUNET_DISK_FileHandle *fh, OFF_T unlockSta
rt, rt,
off_t unlockEnd); OFF_T unlockEnd);
/** /**
* @brief Removes special characters as ':' from a filename. * @brief Removes special characters as ':' from a filename.
* @param fn the filename to canonicalize * @param fn the filename to canonicalize
*/ */
void void
GNUNET_DISK_filename_canonicalize (char *fn); GNUNET_DISK_filename_canonicalize (char *fn);
/** /**
* @brief Change owner of a file * @brief Change owner of a file
skipping to change at line 678 skipping to change at line 721
GNUNET_DISK_file_unmap (struct GNUNET_DISK_MapHandle *h); GNUNET_DISK_file_unmap (struct GNUNET_DISK_MapHandle *h);
/** /**
* Write file changes to disk * Write file changes to disk
* @param h handle to an open file * @param h handle to an open file
* @return GNUNET_OK on success, GNUNET_SYSERR otherwise * @return GNUNET_OK on success, GNUNET_SYSERR otherwise
*/ */
int int
GNUNET_DISK_file_sync (const struct GNUNET_DISK_FileHandle *h); GNUNET_DISK_file_sync (const struct GNUNET_DISK_FileHandle *h);
/**
* Creates a named pipe/FIFO and opens it
* @param fn pointer to the name of the named pipe or to NULL
* @param flags open flags
* @param perm access permissions
* @return pipe handle on success, NULL on error
*/
struct GNUNET_DISK_FileHandle *
GNUNET_DISK_npipe_create (char **fn, enum GNUNET_DISK_OpenFlags flags,
enum GNUNET_DISK_AccessPermissions perm);
/**
* Opens already existing named pipe/FIFO
*
* @param fn name of an existing named pipe
* @param flags open flags
* @param perm access permissions
* @return pipe handle on success, NULL on error
*/
struct GNUNET_DISK_FileHandle *
GNUNET_DISK_npipe_open (const char *fn, enum GNUNET_DISK_OpenFlags flags,
enum GNUNET_DISK_AccessPermissions perm);
/**
* Closes a named pipe/FIFO
* @param pipe named pipe
* @return GNUNET_OK on success, GNUNET_SYSERR otherwise
*/
int
GNUNET_DISK_npipe_close (struct GNUNET_DISK_FileHandle *pipe);
#if 0 /* keep Emacsens' auto-indent happy */ #if 0 /* keep Emacsens' auto-indent happy */
{ {
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
/* ifndef GNUNET_DISK_LIB_H */ /* ifndef GNUNET_DISK_LIB_H */
#endif #endif
/* end of gnunet_disk_lib.h */ /* end of gnunet_disk_lib.h */
 End of changes. 12 change blocks. 
47 lines changed or deleted 68 lines changed or added


 gnunet_fs_service.h   gnunet_fs_service.h 
skipping to change at line 29 skipping to change at line 29
*/ */
/** /**
* @file include/gnunet_fs_service.h * @file include/gnunet_fs_service.h
* @brief API for file-sharing via GNUnet * @brief API for file-sharing via GNUnet
* @author Christian Grothoff * @author Christian Grothoff
*/ */
#ifndef GNUNET_FS_LIB_H #ifndef GNUNET_FS_LIB_H
#define GNUNET_FS_LIB_H #define GNUNET_FS_LIB_H
#include "gnunet_util_lib.h" #include "gnunet_util_lib.h"
#include "gnunet_scheduler_lib.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
{ {
#if 0 /* keep Emacsens' auto-indent happy */ #if 0 /* keep Emacsens' auto-indent happy */
} }
#endif #endif
#endif #endif
/** /**
skipping to change at line 55 skipping to change at line 56
* 2.2.x: with directories * 2.2.x: with directories
* 3.0.x: with namespaces * 3.0.x: with namespaces
* 3.1.x: with namespace meta-data * 3.1.x: with namespace meta-data
* 3.2.x: with collections * 3.2.x: with collections
* 4.0.x: with expiration, variable meta-data, kblocks * 4.0.x: with expiration, variable meta-data, kblocks
* 4.1.x: with new error and configuration handling * 4.1.x: with new error and configuration handling
* 5.0.x: with location URIs * 5.0.x: with location URIs
* 6.0.0: with support for OR in KSKs * 6.0.0: with support for OR in KSKs
* 6.1.x: with simplified namespace support * 6.1.x: with simplified namespace support
* 9.0.0: CPS-style integrated API * 9.0.0: CPS-style integrated API
* 9.1.1: asynchronous directory scanning
*/ */
#define GNUNET_FS_VERSION 0x00090001 #define GNUNET_FS_VERSION 0x00090102
/* ******************** URI API *********************** */ /* ******************** URI API *********************** */
#define GNUNET_FS_URI_PREFIX "gnunet://fs/" #define GNUNET_FS_URI_PREFIX "gnunet://fs/"
#define GNUNET_FS_URI_KSK_INFIX "ksk/" #define GNUNET_FS_URI_KSK_INFIX "ksk/"
#define GNUNET_FS_URI_SKS_INFIX "sks/" #define GNUNET_FS_URI_SKS_INFIX "sks/"
#define GNUNET_FS_URI_CHK_INFIX "chk/" #define GNUNET_FS_URI_CHK_INFIX "chk/"
#define GNUNET_FS_URI_LOC_INFIX "loc/" #define GNUNET_FS_URI_LOC_INFIX "loc/"
/** /**
skipping to change at line 988 skipping to change at line 990
* Depth of the given block in the tree; * Depth of the given block in the tree;
* 0 would be the lowest level (DBLOCKS). * 0 would be the lowest level (DBLOCKS).
*/ */
unsigned int depth; unsigned int depth;
/** /**
* How much trust did we offer for downloading this block? * How much trust did we offer for downloading this block?
*/ */
unsigned int trust_offered; unsigned int trust_offered;
/**
* How much time passed between us asking for this block and
* actually getting it? GNUNET_TIME_UNIT_FOREVER_REL if unknown.
*/
struct GNUNET_TIME_Relative block_download_duration;
} progress; } progress;
/** /**
* These values are only valid for * These values are only valid for
* GNUNET_FS_STATUS_DOWNLOAD_START events. * GNUNET_FS_STATUS_DOWNLOAD_START events.
*/ */
struct struct
{ {
/** /**
skipping to change at line 1638 skipping to change at line 1646
* Close our connection with the file-sharing service. * Close our connection with the file-sharing service.
* The callback given to GNUNET_FS_start will no longer be * The callback given to GNUNET_FS_start will no longer be
* called after this function returns. * called after this function returns.
* *
* @param h handle that was returned from GNUNET_FS_start * @param h handle that was returned from GNUNET_FS_start
*/ */
void void
GNUNET_FS_stop (struct GNUNET_FS_Handle *h); GNUNET_FS_stop (struct GNUNET_FS_Handle *h);
/** /**
* Extract meta-data from a file.
*
* @param md metadata to set
* @param filename name of file to inspect
* @param extractors plugins to use
* @return GNUNET_SYSERR on error, otherwise the number
* of meta-data items obtained
*/
int
GNUNET_FS_meta_data_extract_from_file (struct GNUNET_CONTAINER_MetaData *md
,
const char *filename,
struct EXTRACTOR_PluginList *extract
ors);
/**
* Function called on entries in a GNUNET_FS_FileInformation publish-struct ure. * Function called on entries in a GNUNET_FS_FileInformation publish-struct ure.
* *
* @param cls closure * @param cls closure
* @param fi the entry in the publish-structure * @param fi the entry in the publish-structure
* @param length length of the file or directory * @param length length of the file or directory
* @param meta metadata for the file or directory (can be modified) * @param meta metadata for the file or directory (can be modified)
* @param uri pointer to the keywords that will be used for this entry (can be modified) * @param uri pointer to the keywords that will be used for this entry (can be modified)
* @param bo block options (can be modified) * @param bo block options (can be modified)
* @param do_index should we index (can be modified) * @param do_index should we index (can be modified)
* @param client_info pointer to client context set upon creation (can be m odified) * @param client_info pointer to client context set upon creation (can be m odified)
skipping to change at line 1692 skipping to change at line 1686
* *
* @param s structure to get the filename for * @param s structure to get the filename for
* @return NULL on error, otherwise filename that * @return NULL on error, otherwise filename that
* can be passed to "GNUNET_FS_file_information_recover" * can be passed to "GNUNET_FS_file_information_recover"
* to read this fi-struct from disk. * to read this fi-struct from disk.
*/ */
const char * const char *
GNUNET_FS_file_information_get_id (struct GNUNET_FS_FileInformation *s); GNUNET_FS_file_information_get_id (struct GNUNET_FS_FileInformation *s);
/** /**
* Obtain the filename from the file information structure.
*
* @param s structure to get the filename for
* @return "filename" field of the structure (can be NULL)
*/
const char *
GNUNET_FS_file_information_get_filename (struct GNUNET_FS_FileInformation *
s);
/**
* Set the filename in the file information structure.
* If filename was already set, frees it before setting the new one.
* Makes a copy of the argument.
*
* @param s structure to get the filename for
* @param filename filename to set
*/
void
GNUNET_FS_file_information_set_filename (struct GNUNET_FS_FileInformation *
s,
const char *filename);
/**
* Create an entry for a file in a publish-structure. * Create an entry for a file in a publish-structure.
* *
* @param h handle to the file sharing subsystem * @param h handle to the file sharing subsystem
* @param client_info initial client-info value for this entry * @param client_info initial client-info value for this entry
* @param filename name of the file or directory to publish * @param filename name of the file or directory to publish
* @param keywords under which keywords should this file be available * @param keywords under which keywords should this file be available
* directly; can be NULL * directly; can be NULL
* @param meta metadata for the file * @param meta metadata for the file
* @param do_index GNUNET_YES for index, GNUNET_NO for insertion, * @param do_index GNUNET_YES for index, GNUNET_NO for insertion,
* GNUNET_SYSERR for simulation * GNUNET_SYSERR for simulation
skipping to change at line 1795 skipping to change at line 1810
void *reader_cls, void *reader_cls,
const struct GNUNET_FS_Uri const struct GNUNET_FS_Uri
*keywords, *keywords,
const struct const struct
GNUNET_CONTAINER_MetaData *m eta, GNUNET_CONTAINER_MetaData *m eta,
int do_index, int do_index,
const struct const struct
GNUNET_FS_BlockOptions *bo); GNUNET_FS_BlockOptions *bo);
/** /**
* Function that a "GNUNET_FS_DirectoryScanner" should call
* for each entry in the directory.
*
* @param cls closure
* @param filename name of the file (including path); must end
* in a "/" (even on W32) if this is a directory
* @param fi information about the file (should not be
* used henceforth by the caller)
*/
typedef void (*GNUNET_FS_FileProcessor) (void *cls, const char *filename,
struct GNUNET_FS_FileInformation *
fi);
/**
* Type of a function that will be used to scan a directory.
*
* @param cls closure
* @param h handle to the file sharing subsystem
* @param dirname name of the directory to scan
* @param do_index should files be indexed or inserted
* @param bo block options
* @param proc function to call on each entry
* @param proc_cls closure for proc
* @param emsg where to store an error message (on errors)
* @return GNUNET_OK on success
*/
typedef int (*GNUNET_FS_DirectoryScanner) (void *cls,
struct GNUNET_FS_Handle * h,
const char *dirname, int do_inde
x,
const struct GNUNET_FS_BlockOpti
ons *
bo, GNUNET_FS_FileProcessor proc
,
void *proc_cls, char **emsg);
/**
* Simple, useful default implementation of a directory scanner
* (GNUNET_FS_DirectoryScanner). This implementation expects to get a
* UNIX filename, will publish all files in the directory except hidden
* files (those starting with a "."). Metadata will be extracted
* using GNU libextractor; the specific list of plugins should be
* specified in "cls", passing NULL will disable (!) metadata
* extraction. Keywords will be derived from the metadata and
* associated with directories as appropriate. This is strictly a
* convenience function (however, if all tools use it, there will
* be less of a chance of distinguishing users by the specific
* user-interface they were using).
*
* @param cls must be of type "struct EXTRACTOR_Extractor*"
* @param h handle to the file sharing subsystem
* @param dirname name of the directory to scan
* @param do_index should files be indexed or inserted
* @param bo block options
* @param proc function called on each entry
* @param proc_cls closure for proc
* @param emsg where to store an error message (on errors)
* @return GNUNET_OK on success
*/
int
GNUNET_FS_directory_scanner_default (void *cls, struct GNUNET_FS_Handle *h,
const char *dirname, int do_index,
const struct GNUNET_FS_BlockOptions *b
o,
GNUNET_FS_FileProcessor proc,
void *proc_cls, char **emsg);
/**
* Create a publish-structure from an existing file hierarchy, inferring
* and organizing keywords and metadata as much as possible. This
* function primarily performs the recursive build and re-organizes
* keywords and metadata; for automatically getting metadata
* extraction, scanning of directories and creation of the respective
* GNUNET_FS_FileInformation entries the default scanner should be
* passed (GNUNET_FS_directory_scanner_default). This is strictly a
* convenience function.
*
* @param h handle to the file sharing subsystem
* @param client_info initial client-info value for this entry
* @param filename name of the top-level file or directory
* @param scanner function used to get a list of files in a directory
* @param scanner_cls closure for scanner
* @param do_index should files in the hierarchy be indexed?
* @param bo block options
* @param emsg where to store an error message
* @return publish structure entry for the directory, NULL on error
*/
struct GNUNET_FS_FileInformation *
GNUNET_FS_file_information_create_from_directory (struct GNUNET_FS_Handle *
h,
void *client_info,
const char *filename,
GNUNET_FS_DirectoryScanne
r
scanner, void *scanner_cl
s,
int do_index,
const struct
GNUNET_FS_BlockOptions *b
o,
char **emsg);
/**
* Create an entry for an empty directory in a publish-structure. * Create an entry for an empty directory in a publish-structure.
* This function should be used by applications for which the * This function should be used by applications for which the
* use of "GNUNET_FS_file_information_create_from_directory" * use of "GNUNET_FS_file_information_create_from_directory"
* is not appropriate. * is not appropriate.
* *
* @param h handle to the file sharing subsystem * @param h handle to the file sharing subsystem
* @param client_info initial client-info value for this entry * @param client_info initial client-info value for this entry
* @param keywords under which keywords should this directory be available * @param keywords under which keywords should this directory be available
* directly; can be NULL * directly; can be NULL
* @param meta metadata for the directory * @param meta metadata for the directory
* @param bo block options * @param bo block options
* @param filename name of the directory; can be NULL
* @return publish structure entry for the directory , NULL on error * @return publish structure entry for the directory , NULL on error
*/ */
struct GNUNET_FS_FileInformation * struct GNUNET_FS_FileInformation *
GNUNET_FS_file_information_create_empty_directory (struct GNUNET_FS_Handle *h, GNUNET_FS_file_information_create_empty_directory (struct GNUNET_FS_Handle *h,
void *client_info, void *client_info,
const struct GNUNET_FS_U ri const struct GNUNET_FS_U ri
*keywords, *keywords,
const struct const struct
GNUNET_CONTAINER_MetaDat a GNUNET_CONTAINER_MetaDat a
*meta, *meta,
const struct const struct
GNUNET_FS_BlockOptions * GNUNET_FS_BlockOptions *
bo); bo,
const char *filename);
/** /**
* Test if a given entry represents a directory. * Test if a given entry represents a directory.
* *
* @param ent check if this FI represents a directory * @param ent check if this FI represents a directory
* @return GNUNET_YES if so, GNUNET_NO if not * @return GNUNET_YES if so, GNUNET_NO if not
*/ */
int int
GNUNET_FS_file_information_is_directory (const struct GNUNET_FS_FileInforma tion GNUNET_FS_file_information_is_directory (const struct GNUNET_FS_FileInforma tion
*ent); *ent);
skipping to change at line 2034 skipping to change at line 1957
* *
* @param cls closure * @param cls closure
* @param uri URI under which the block is now available, NULL on error * @param uri URI under which the block is now available, NULL on error
* @param emsg error message, NULL on success * @param emsg error message, NULL on success
*/ */
typedef void (*GNUNET_FS_PublishContinuation) (void *cls, typedef void (*GNUNET_FS_PublishContinuation) (void *cls,
const struct GNUNET_FS_Uri * uri, const struct GNUNET_FS_Uri * uri,
const char *emsg); const char *emsg);
/** /**
* Handle to cancel publish KSK operation.
*/
struct GNUNET_FS_PublishKskContext;
/**
* Publish a KBlock on GNUnet. * Publish a KBlock on GNUnet.
* *
* @param h handle to the file sharing subsystem * @param h handle to the file sharing subsystem
* @param ksk_uri keywords to use * @param ksk_uri keywords to use
* @param meta metadata to use * @param meta metadata to use
* @param uri URI to refer to in the KBlock * @param uri URI to refer to in the KBlock
* @param bo block options * @param bo block options
* @param options publication options * @param options publication options
* @param cont continuation * @param cont continuation
* @param cont_cls closure for cont * @param cont_cls closure for cont
* @return NULL on error ('cont' will still be called)
*/ */
void struct GNUNET_FS_PublishKskContext *
GNUNET_FS_publish_ksk (struct GNUNET_FS_Handle *h, GNUNET_FS_publish_ksk (struct GNUNET_FS_Handle *h,
const struct GNUNET_FS_Uri *ksk_uri, const struct GNUNET_FS_Uri *ksk_uri,
const struct GNUNET_CONTAINER_MetaData *meta, const struct GNUNET_CONTAINER_MetaData *meta,
const struct GNUNET_FS_Uri *uri, const struct GNUNET_FS_Uri *uri,
const struct GNUNET_FS_BlockOptions *bo, const struct GNUNET_FS_BlockOptions *bo,
enum GNUNET_FS_PublishOptions options, enum GNUNET_FS_PublishOptions options,
GNUNET_FS_PublishContinuation cont, void *cont_cls); GNUNET_FS_PublishContinuation cont, void *cont_cls);
/** /**
* Abort the KSK publishing operation.
*
* @param pkc context of the operation to abort.
*/
void
GNUNET_FS_publish_ksk_cancel (struct GNUNET_FS_PublishKskContext *pkc);
/**
* Handle to cancel publish SKS operation.
*/
struct GNUNET_FS_PublishSksContext;
/**
* Publish an SBlock on GNUnet. * Publish an SBlock on GNUnet.
* *
* @param h handle to the file sharing subsystem * @param h handle to the file sharing subsystem
* @param namespace namespace to publish in * @param namespace namespace to publish in
* @param identifier identifier to use * @param identifier identifier to use
* @param update update identifier to use * @param update update identifier to use
* @param meta metadata to use * @param meta metadata to use
* @param uri URI to refer to in the SBlock * @param uri URI to refer to in the SBlock
* @param bo block options * @param bo block options
* @param options publication options * @param options publication options
* @param cont continuation * @param cont continuation
* @param cont_cls closure for cont * @param cont_cls closure for cont
* @return NULL on error ('cont' will still be called)
*/ */
void struct GNUNET_FS_PublishSksContext *
GNUNET_FS_publish_sks (struct GNUNET_FS_Handle *h, GNUNET_FS_publish_sks (struct GNUNET_FS_Handle *h,
struct GNUNET_FS_Namespace *namespace, struct GNUNET_FS_Namespace *namespace,
const char *identifier, const char *update, const char *identifier, const char *update,
const struct GNUNET_CONTAINER_MetaData *meta, const struct GNUNET_CONTAINER_MetaData *meta,
const struct GNUNET_FS_Uri *uri, const struct GNUNET_FS_Uri *uri,
const struct GNUNET_FS_BlockOptions *bo, const struct GNUNET_FS_BlockOptions *bo,
enum GNUNET_FS_PublishOptions options, enum GNUNET_FS_PublishOptions options,
GNUNET_FS_PublishContinuation cont, void *cont_cls); GNUNET_FS_PublishContinuation cont, void *cont_cls);
/** /**
* Abort the SKS publishing operation.
*
* @param psc context of the operation to abort.
*/
void
GNUNET_FS_publish_sks_cancel (struct GNUNET_FS_PublishSksContext *psc);
/**
* Type of a function called by "GNUNET_FS_get_indexed_files". * Type of a function called by "GNUNET_FS_get_indexed_files".
* *
* @param cls closure * @param cls closure
* @param filename the name of the file * @param filename the name of the file, NULL for end of list
* @param file_id hash of the contents of the indexed file * @param file_id hash of the contents of the indexed file
* @return GNUNET_OK to continue iteration, GNUNET_SYSERR to abort * @return GNUNET_OK to continue iteration, GNUNET_SYSERR to abort
*/ */
typedef int (*GNUNET_FS_IndexedFileProcessor) (void *cls, const char *filen ame, typedef int (*GNUNET_FS_IndexedFileProcessor) (void *cls, const char *filen ame,
const GNUNET_HashCode * file _id); const GNUNET_HashCode * file _id);
/** /**
* Handle to cancel 'GNUNET_FS_get_indexed_files'.
*/
struct GNUNET_FS_GetIndexedContext;
/**
* Iterate over all indexed files. * Iterate over all indexed files.
* *
* @param h handle to the file sharing subsystem * @param h handle to the file sharing subsystem
* @param iterator function to call on each indexed file * @param iterator function to call on each indexed file
* @param iterator_cls closure for iterator * @param iterator_cls closure for iterator
* @param cont continuation to call when done; * @return NULL on error ('iter' is not called)
* reason should be "TIMEOUT" (on
* error) or "PREREQ_DONE" (on success)
* @param cont_cls closure for cont
*/ */
void struct GNUNET_FS_GetIndexedContext *
GNUNET_FS_get_indexed_files (struct GNUNET_FS_Handle *h, GNUNET_FS_get_indexed_files (struct GNUNET_FS_Handle *h,
GNUNET_FS_IndexedFileProcessor iterator, GNUNET_FS_IndexedFileProcessor iterator,
void *iterator_cls, GNUNET_SCHEDULER_Task cont void *iterator_cls);
,
void *cont_cls); /**
* Cancel iteration over all indexed files.
*
* @param gic operation to cancel
*/
void
GNUNET_FS_get_indexed_files_cancel (struct GNUNET_FS_GetIndexedContext *gic
);
/** /**
* Unindex a file. * Unindex a file.
* *
* @param h handle to the file sharing subsystem * @param h handle to the file sharing subsystem
* @param filename file to unindex * @param filename file to unindex
* @param cctx initial value for the client context * @param cctx initial value for the client context
* @return NULL on error, otherwise handle * @return NULL on error, otherwise handle
*/ */
struct GNUNET_FS_UnindexContext * struct GNUNET_FS_UnindexContext *
skipping to change at line 2127 skipping to change at line 2087
/** /**
* Clean up after completion of an unindex operation. * Clean up after completion of an unindex operation.
* *
* @param uc handle * @param uc handle
*/ */
void void
GNUNET_FS_unindex_stop (struct GNUNET_FS_UnindexContext *uc); GNUNET_FS_unindex_stop (struct GNUNET_FS_UnindexContext *uc);
/** /**
* Context for advertising a namespace.
*/
struct GNUNET_FS_AdvertisementContext;
/**
* Publish an advertismement for a namespace. * Publish an advertismement for a namespace.
* *
* @param h handle to the file sharing subsystem * @param h handle to the file sharing subsystem
* @param ksk_uri keywords to use for advertisment * @param ksk_uri keywords to use for advertisment
* @param namespace handle for the namespace that should be advertised * @param namespace handle for the namespace that should be advertised
* @param meta meta-data for the namespace advertisement * @param meta meta-data for the namespace advertisement
* @param bo block options * @param bo block options
* @param rootEntry name of the root of the namespace * @param rootEntry name of the root of the namespace
* @param cont continuation * @param cont continuation
* @param cont_cls closure for cont * @param cont_cls closure for cont
* @return NULL on error ('cont' will still be called)
*/ */
void struct GNUNET_FS_AdvertisementContext *
GNUNET_FS_namespace_advertise (struct GNUNET_FS_Handle *h, GNUNET_FS_namespace_advertise (struct GNUNET_FS_Handle *h,
struct GNUNET_FS_Uri *ksk_uri, struct GNUNET_FS_Uri *ksk_uri,
struct GNUNET_FS_Namespace *namespace, struct GNUNET_FS_Namespace *namespace,
const struct GNUNET_CONTAINER_MetaData *meta , const struct GNUNET_CONTAINER_MetaData *meta ,
const struct GNUNET_FS_BlockOptions *bo, const struct GNUNET_FS_BlockOptions *bo,
const char *rootEntry, const char *rootEntry,
GNUNET_FS_PublishContinuation cont, GNUNET_FS_PublishContinuation cont,
void *cont_cls); void *cont_cls);
/** /**
* Abort the namespace advertisement operation.
*
* @param ac context of the operation to abort.
*/
void
GNUNET_FS_namespace_advertise_cancel (struct GNUNET_FS_AdvertisementContext
*ac);
/**
* Create a namespace with the given name; if one already * Create a namespace with the given name; if one already
* exists, return a handle to the existing namespace. * exists, return a handle to the existing namespace.
* *
* @param h handle to the file sharing subsystem * @param h handle to the file sharing subsystem
* @param name name to use for the namespace * @param name name to use for the namespace
* @return handle to the namespace, NULL on error * @return handle to the namespace, NULL on error
*/ */
struct GNUNET_FS_Namespace * struct GNUNET_FS_Namespace *
GNUNET_FS_namespace_create (struct GNUNET_FS_Handle *h, const char *name); GNUNET_FS_namespace_create (struct GNUNET_FS_Handle *h, const char *name);
/** /**
* Duplicate a namespace handle.
*
* @param ns namespace handle
* @return duplicated handle to the namespace
*/
struct GNUNET_FS_Namespace *
GNUNET_FS_namespace_dup (struct GNUNET_FS_Namespace *ns);
/**
* Delete a namespace handle. Can be used for a clean shutdown (free * Delete a namespace handle. Can be used for a clean shutdown (free
* memory) or also to freeze the namespace to prevent further * memory) or also to freeze the namespace to prevent further
* insertions by anyone. * insertions by anyone.
* *
* @param namespace handle to the namespace that should be deleted / freed * @param namespace handle to the namespace that should be deleted / freed
* @param freeze prevents future insertions; creating a namespace * @param freeze prevents future insertions; creating a namespace
* with the same name again will create a fresh namespace instead * with the same name again will create a fresh namespace instead
* *
* @return GNUNET_OK on success, GNUNET_SYSERR on error * @return GNUNET_OK on success, GNUNET_SYSERR on error
*/ */
skipping to change at line 2555 skipping to change at line 2538
* *
* @param bld directory to finish * @param bld directory to finish
* @param rsize set to the number of bytes needed * @param rsize set to the number of bytes needed
* @param rdata set to the encoded directory * @param rdata set to the encoded directory
* @return GNUNET_OK on success * @return GNUNET_OK on success
*/ */
int int
GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld, GNUNET_FS_directory_builder_finish (struct GNUNET_FS_DirectoryBuilder *bld,
size_t * rsize, void **rdata); size_t * rsize, void **rdata);
/* ******************** DirScanner API *********************** */
/**
* Progress reasons of the directory scanner.
*/
enum GNUNET_FS_DirScannerProgressUpdateReason
{
/**
* We've started processing a file or directory.
*/
GNUNET_FS_DIRSCANNER_FILE_START = 0,
/**
* We're having trouble accessing a file (soft-error); it will
* be ignored.
*/
GNUNET_FS_DIRSCANNER_FILE_IGNORED,
/**
* We've found all files (in the pre-pass).
*/
GNUNET_FS_DIRSCANNER_ALL_COUNTED,
/**
* We've finished extracting meta data from a file.
*/
GNUNET_FS_DIRSCANNER_EXTRACT_FINISHED,
/**
* Last call to the progress function: we have finished scanning
* the directory.
*/
GNUNET_FS_DIRSCANNER_FINISHED,
/**
* There was an internal error. Application should abort the scan.
*/
GNUNET_FS_DIRSCANNER_INTERNAL_ERROR
};
/**
* Function called over time as the directory scanner makes
* progress on the job at hand.
*
* @param cls closure
* @param filename which file we are making progress on
* @param is_directory GNUNET_YES if this is a directory,
* GNUNET_NO if this is a file
* GNUNET_SYSERR if it is neither (or unknown)
* @param reason kind of progress we are making
*/
typedef void (*GNUNET_FS_DirScannerProgressCallback) (void *cls,
const char *filename,
int is_directory,
enum GNUNET_FS_DirScan
nerProgressUpdateReason reason);
/**
* A node of a directory tree (produced by dirscanner)
*/
struct GNUNET_FS_ShareTreeItem
{
/**
* This is a doubly-linked list
*/
struct GNUNET_FS_ShareTreeItem *prev;
/**
* This is a doubly-linked list
*/
struct GNUNET_FS_ShareTreeItem *next;
/**
* This is a doubly-linked tree
* NULL for top-level entries.
*/
struct GNUNET_FS_ShareTreeItem *parent;
/**
* This is a doubly-linked tree
* NULL for files and empty directories
*/
struct GNUNET_FS_ShareTreeItem *children_head;
/**
* This is a doubly-linked tree
* NULL for files and empty directories
*/
struct GNUNET_FS_ShareTreeItem *children_tail;
/**
* Metadata for this file or directory
*/
struct GNUNET_CONTAINER_MetaData *meta;
/**
* Keywords for this file or directory (derived from metadata).
*/
struct GNUNET_FS_Uri *ksk_uri;
/**
* Name of the file/directory
*/
char *filename;
/**
* Base name of the file/directory.
*/
char *short_filename;
/**
* GNUNET_YES if this is a directory
*/
int is_directory;
};
/**
* Opaqe handle to an asynchronous directory scanning activity.
*/
struct GNUNET_FS_DirScanner;
/**
* Start a directory scanner.
*
* @param filename name of the directory to scan
* @param disable_extractor GNUNET_YES to not to run libextractor on files
(only build a tree)
* @param ex if not NULL, must be a list of extra plugins for extractor
* @param cb the callback to call when there are scanning progress messages
* @param cb_cls closure for 'cb'
* @return directory scanner object to be used for controlling the scanner
*/
struct GNUNET_FS_DirScanner *
GNUNET_FS_directory_scan_start (const char *filename,
int disable_extractor,
const char *ex,
GNUNET_FS_DirScannerProgressCallback cb,
void *cb_cls);
/**
* Abort the scan. Must not be called from within the progress_callback
* function.
*
* @param ds directory scanner structure
*/
void
GNUNET_FS_directory_scan_abort (struct GNUNET_FS_DirScanner *ds);
/**
* Obtain the result of the scan after the scan has signalled
* completion. Must not be called prior to completion. The 'ds' is
* freed as part of this call.
*
* @param ds directory scanner structure
* @return the results of the scan (a directory tree)
*/
struct GNUNET_FS_ShareTreeItem *
GNUNET_FS_directory_scan_get_result (struct GNUNET_FS_DirScanner *ds);
/**
* Process a share item tree, moving frequent keywords up and
* copying frequent metadata up.
*
* @param toplevel toplevel directory in the tree, returned by the scanner
*/
void
GNUNET_FS_share_tree_trim (struct GNUNET_FS_ShareTreeItem *toplevel);
/**
* Release memory of a share item tree.
*
* @param toplevel toplevel of the tree to be freed
*/
void
GNUNET_FS_share_tree_free (struct GNUNET_FS_ShareTreeItem *toplevel);
#if 0 /* keep Emacsens' auto-indent happy */ #if 0 /* keep Emacsens' auto-indent happy */
{ {
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
 End of changes. 27 change blocks. 
134 lines changed or deleted 288 lines changed or added


 gnunet_hello_lib.h   gnunet_hello_lib.h 
skipping to change at line 315 skipping to change at line 315
* Get the header from a HELLO message, used so other code * Get the header from a HELLO message, used so other code
* can correctly send HELLO messages. * can correctly send HELLO messages.
* *
* @param hello the hello message * @param hello the hello message
* *
* @return header or NULL if the HELLO was malformed * @return header or NULL if the HELLO was malformed
*/ */
struct GNUNET_MessageHeader * struct GNUNET_MessageHeader *
GNUNET_HELLO_get_header (struct GNUNET_HELLO_Message *hello); GNUNET_HELLO_get_header (struct GNUNET_HELLO_Message *hello);
#if 0 /* keep Emacsens' auto-indent happy */
{
#endif
#ifdef __cplusplus
}
#endif
/* ifndef GNUNET_HELLO_LIB_H */ /* ifndef GNUNET_HELLO_LIB_H */
#endif #endif
/* end of gnunet_hello_lib.h */ /* end of gnunet_hello_lib.h */
 End of changes. 1 change blocks. 
0 lines changed or deleted 7 lines changed or added


 gnunet_mesh_service.h   gnunet_mesh_service.h 
skipping to change at line 128 skipping to change at line 128
* tunnel, * tunnel,
const struct const struct
GNUNET_PeerId entity GNUNET_PeerId entity
* initiator, * initiator,
const struct const struct
GNUNET_ATS_In formation GNUNET_ATS_In formation
* atsi); * atsi);
/** /**
* Function called whenever an inbound tunnel is destroyed. Should clean u p * Function called whenever an inbound tunnel is destroyed. Should clean u p
* any associated state. * any associated state. This function is NOT called if the client has
* explicitly asked for the tunnel to be destroyed using
* GNUNET_MESH_tunnel_destroy. It must NOT call GNUNET_MESH_tunnel_destroy
on
* the tunnel.
* *
* @param cls closure (set from GNUNET_MESH_connect) * @param cls closure (set from GNUNET_MESH_connect)
* @param tunnel connection to the other end (henceforth invalid) * @param tunnel connection to the other end (henceforth invalid)
* @param tunnel_ctx place where local state associated * @param tunnel_ctx place where local state associated
* with the tunnel is stored * with the tunnel is stored
*/ */
typedef void (GNUNET_MESH_TunnelEndHandler) (void *cls, typedef void (GNUNET_MESH_TunnelEndHandler) (void *cls,
const struct GNUNET_MESH_Tunne l * const struct GNUNET_MESH_Tunne l *
tunnel, void *tunnel_ctx); tunnel, void *tunnel_ctx);
skipping to change at line 154 skipping to change at line 157
/** /**
* Connect to the mesh service. * Connect to the mesh service.
* *
* @param cfg configuration to use * @param cfg configuration to use
* @param queue_size size of the data message queue, shared among all tunne ls * @param queue_size size of the data message queue, shared among all tunne ls
* (each tunnel is guaranteed to accept at least one mess age, * (each tunnel is guaranteed to accept at least one mess age,
* no matter what is the status of other tunnels) * no matter what is the status of other tunnels)
* @param cls closure for the various callbacks that follow * @param cls closure for the various callbacks that follow
* (including handlers in the handlers array) * (including handlers in the handlers array)
* @param new_tunnel function called when an *inbound* tunnel is created * @param new_tunnel function called when an *inbound* tunnel is created
* @param cleaner function called when an *inbound* tunnel is destroyed * @param cleaner function called when an *inbound* tunnel is destroyed by
the
* remote peer, it is *not* called if GNUNET_MESH_tunnel_des
troy
* is called on the tunnel
* @param handlers callbacks for messages we care about, NULL-terminated * @param handlers callbacks for messages we care about, NULL-terminated
* note that the mesh is allowed to drop notifications about * note that the mesh is allowed to drop notifications about
* inbound messages if the client does not process them fast * inbound messages if the client does not process them fast
* enough (for this notification type, a bounded queue is us ed) * enough (for this notification type, a bounded queue is us ed)
* @param stypes list of the applications that this client claims to provid e * @param stypes list of the applications that this client claims to provid e
* @return handle to the mesh service NULL on error * @return handle to the mesh service NULL on error
* (in this case, init is never called) * (in this case, init is never called)
*/ */
struct GNUNET_MESH_Handle * struct GNUNET_MESH_Handle *
GNUNET_MESH_connect (const struct GNUNET_CONFIGURATION_Handle *cfg, GNUNET_MESH_connect (const struct GNUNET_CONFIGURATION_Handle *cfg,
unsigned int queue_size, void *cls, unsigned int queue_size, void *cls,
GNUNET_MESH_InboundTunnelNotificationHandler new_tunne l, GNUNET_MESH_InboundTunnelNotificationHandler new_tunne l,
GNUNET_MESH_TunnelEndHandler cleaner, GNUNET_MESH_TunnelEndHandler cleaner,
const struct GNUNET_MESH_MessageHandler *handlers, const struct GNUNET_MESH_MessageHandler *handlers,
const GNUNET_MESH_ApplicationType *stypes); const GNUNET_MESH_ApplicationType *stypes);
/** /**
* Disconnect from the mesh service. * Disconnect from the mesh service. All tunnels will be destroyed. All tun
nel
* disconnect callbacks will be called on any still connected peers, notify
ing
* about their disconnection. The registered inbound tunnel cleaner will be
* called should any inbound tunnels still exist.
* *
* @param handle connection to mesh to disconnect * @param handle connection to mesh to disconnect
*/ */
void void
GNUNET_MESH_disconnect (struct GNUNET_MESH_Handle *handle); GNUNET_MESH_disconnect (struct GNUNET_MESH_Handle *handle);
/** /**
* Method called whenever a peer has disconnected from the tunnel. * Method called whenever a peer has disconnected from the tunnel.
* Implementations of this callback must NOT call
* GNUNET_MESH_tunnel_destroy immediately, but instead schedule those
* to run in some other task later. However, calling
* "GNUNET_MESH_notify_transmit_ready_cancel" is allowed.
* *
* @param cls closure * @param cls closure
* @param peer peer identity the tunnel stopped working with * @param peer peer identity the tunnel stopped working with
*/ */
typedef void (*GNUNET_MESH_PeerDisconnectHandler) (void *cls, typedef void (*GNUNET_MESH_PeerDisconnectHandler) (void *cls,
const struct const struct
GNUNET_PeerIdentity * pe er); GNUNET_PeerIdentity * pe er);
/** /**
* Method called whenever a peer has connected to the tunnel. * Method called whenever a peer has connected to the tunnel.
* TODO: change to typedef int? to let client allow the new peer or not
* *
* @param cls closure * @param cls closure
* @param peer peer identity the tunnel was created to, NULL on timeout * @param peer peer identity the tunnel was created to, NULL on timeout
* @param atsi performance data for the connection * @param atsi performance data for the connection
*
* TODO: change to return int to let client allow the new peer or not?
*/ */
typedef void (*GNUNET_MESH_PeerConnectHandler) (void *cls, typedef void (*GNUNET_MESH_PeerConnectHandler) (void *cls,
const struct GNUNET_PeerIde ntity const struct GNUNET_PeerIde ntity
* peer, * peer,
const struct const struct
GNUNET_ATS_Information * at si); GNUNET_ATS_Information * at si);
/** /**
* Create a new tunnel (we're initiator and will be allowed to add/remove p eers * Create a new tunnel (we're initiator and will be allowed to add/remove p eers
* and to broadcast). * and to broadcast).
skipping to change at line 220 skipping to change at line 233
* @param disconnect_handler function to call when peers are disconnected * @param disconnect_handler function to call when peers are disconnected
* @param handler_cls closure for connect/disconnect handlers * @param handler_cls closure for connect/disconnect handlers
*/ */
struct GNUNET_MESH_Tunnel * struct GNUNET_MESH_Tunnel *
GNUNET_MESH_tunnel_create (struct GNUNET_MESH_Handle *h, void *tunnel_ctx, GNUNET_MESH_tunnel_create (struct GNUNET_MESH_Handle *h, void *tunnel_ctx,
GNUNET_MESH_PeerConnectHandler connect_handler, GNUNET_MESH_PeerConnectHandler connect_handler,
GNUNET_MESH_PeerDisconnectHandler disconnect_han dler, GNUNET_MESH_PeerDisconnectHandler disconnect_han dler,
void *handler_cls); void *handler_cls);
/** /**
* Destroy an existing tunnel. * Destroy an existing tunnel. The existing callback for the tunnel will NO
T
* be called.
* *
* @param tunnel tunnel handle * @param tunnel tunnel handle
*/ */
void void
GNUNET_MESH_tunnel_destroy (struct GNUNET_MESH_Tunnel *tunnel); GNUNET_MESH_tunnel_destroy (struct GNUNET_MESH_Tunnel *tunnel);
/** /**
* Request that a peer should be added to the tunnel. The connect handler * Request that a peer should be added to the tunnel. The connect handler
* will be called when the peer connects * will be called when the peer connects
* *
 End of changes. 7 change blocks. 
5 lines changed or deleted 25 lines changed or added


 gnunet_os_lib.h   gnunet_os_lib.h 
skipping to change at line 30 skipping to change at line 30
/** /**
* @file include/gnunet_os_lib.h * @file include/gnunet_os_lib.h
* @brief low level process routines * @brief low level process routines
* @author Christian Grothoff * @author Christian Grothoff
* @author Krista Bennett * @author Krista Bennett
* @author Gerd Knorr <kraxel@bytesex.org> * @author Gerd Knorr <kraxel@bytesex.org>
* @author Ioana Patrascu * @author Ioana Patrascu
* @author Tzvetan Horozov * @author Tzvetan Horozov
* @author Milan * @author Milan
*
* This code manages child processes. We can communicate with child
* processes using signals. Because signals are not supported on W32
* and Java (at least not nicely), we can alternatively use a pipe
* to send signals to the child processes (if the child process is
* a full-blown GNUnet process that supports reading signals from
* a pipe, of course). Naturally, this also only works for 'normal'
* termination via signals, and not as a replacement for SIGKILL.
* Thus using pipes to communicate signals should only be enabled if
* the child is a Java process OR if we are on Windoze.
*/ */
#ifndef GNUNET_OS_LIB_H #ifndef GNUNET_OS_LIB_H
#define GNUNET_OS_LIB_H #define GNUNET_OS_LIB_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
{ {
#if 0 /* keep Emacsens' auto-indent happy */ #if 0 /* keep Emacsens' auto-indent happy */
} }
skipping to change at line 197 skipping to change at line 207
* *
* The pointer it returns points to static memory location and must not be * The pointer it returns points to static memory location and must not be
* deallocated/closed * deallocated/closed
* *
* @return pointer to the process sturcutre for this process * @return pointer to the process sturcutre for this process
*/ */
struct GNUNET_OS_Process * struct GNUNET_OS_Process *
GNUNET_OS_process_current (void); GNUNET_OS_process_current (void);
/** /**
* Sends sig to the process * Sends a signal to the process
* *
* @param proc pointer to process structure * @param proc pointer to process structure
* @param sig signal * @param sig signal
* @return 0 on success, -1 on error * @return 0 on success, -1 on error
*/ */
int int
GNUNET_OS_process_kill (struct GNUNET_OS_Process *proc, int sig); GNUNET_OS_process_kill (struct GNUNET_OS_Process *proc, int sig);
/** /**
* Cleans up process structure contents (OS-dependent) and deallocates it * Cleans up process structure contents (OS-dependent) and deallocates it
skipping to change at line 238 skipping to change at line 248
* @param prio priority value * @param prio priority value
* @return GNUNET_OK on success, GNUNET_SYSERR on error * @return GNUNET_OK on success, GNUNET_SYSERR on error
*/ */
int int
GNUNET_OS_set_process_priority (struct GNUNET_OS_Process *proc, GNUNET_OS_set_process_priority (struct GNUNET_OS_Process *proc,
enum GNUNET_SCHEDULER_Priority prio); enum GNUNET_SCHEDULER_Priority prio);
/** /**
* Start a process. * Start a process.
* *
* @param pipe_control should a pipe be used to send signals to the child?
* @param pipe_stdin pipe to use to send input to child process (or NULL)
* @param pipe_stdout pipe to use to get output from child process (or NULL
)
* @param filename name of the binary
* @param argv NULL-terminated array of arguments to the process
* @return pointer to process structure of the new process, NULL on error
*/
struct GNUNET_OS_Process *
GNUNET_OS_start_process_vap (int pipe_control,
struct GNUNET_DISK_PipeHandle *pipe_stdin,
struct GNUNET_DISK_PipeHandle *pipe_stdout,
const char *filename,
char *const argv[]);
/**
* Start a process.
*
* @param pipe_control should a pipe be used to send signals to the child?
* @param pipe_stdin pipe to use to send input to child process (or NULL) * @param pipe_stdin pipe to use to send input to child process (or NULL)
* @param pipe_stdout pipe to use to get output from child process (or NULL ) * @param pipe_stdout pipe to use to get output from child process (or NULL )
* @param filename name of the binary * @param filename name of the binary
* @param ... NULL-terminated list of arguments to the process * @param ... NULL-terminated list of arguments to the process
* @return pointer to process structure of the new process, NULL on error * @return pointer to process structure of the new process, NULL on error
*/ */
struct GNUNET_OS_Process * struct GNUNET_OS_Process *
GNUNET_OS_start_process (struct GNUNET_DISK_PipeHandle *pipe_stdin, GNUNET_OS_start_process (int pipe_control,
struct GNUNET_DISK_PipeHandle *pipe_stdin,
struct GNUNET_DISK_PipeHandle *pipe_stdout, struct GNUNET_DISK_PipeHandle *pipe_stdout,
const char *filename, ...); const char *filename, ...);
/** /**
* Start a process. * Start a process.
* *
* @param pipe_control should a pipe be used to send signals to the child?
* @param pipe_stdin pipe to use to send input to child process (or NULL) * @param pipe_stdin pipe to use to send input to child process (or NULL)
* @param pipe_stdout pipe to use to get output from child process (or NULL ) * @param pipe_stdout pipe to use to get output from child process (or NULL )
* @param filename name of the binary * @param filename name of the binary
* @param va NULL-terminated list of arguments to the process * @param va NULL-terminated list of arguments to the process
* @return pointer to process structure of the new process, NULL on error * @return pointer to process structure of the new process, NULL on error
*/ */
struct GNUNET_OS_Process * struct GNUNET_OS_Process *
GNUNET_OS_start_process_va (struct GNUNET_DISK_PipeHandle *pipe_stdin, GNUNET_OS_start_process_va (int pipe_control,
struct GNUNET_DISK_PipeHandle *pipe_stdin,
struct GNUNET_DISK_PipeHandle *pipe_stdout, struct GNUNET_DISK_PipeHandle *pipe_stdout,
const char *filename, va_list va); const char *filename, va_list va);
/** /**
* Start a process. * Start a process.
* *
* @param pipe_control should a pipe be used to send signals to the child?
* @param lsocks array of listen sockets to dup systemd-style (or NULL); * @param lsocks array of listen sockets to dup systemd-style (or NULL);
* must be NULL on platforms where dup is not supported * must be NULL on platforms where dup is not supported
* @param filename name of the binary * @param filename name of the binary
* @param argv NULL-terminated list of arguments to the process, * @param argv NULL-terminated list of arguments to the process,
* including the process name as the first argument * including the process name as the first argument
* @return pointer to process structure of the new process, NULL on error * @return pointer to process structure of the new process, NULL on error
*/ */
struct GNUNET_OS_Process * struct GNUNET_OS_Process *
GNUNET_OS_start_process_v (const SOCKTYPE *lsocks, const char *filename, GNUNET_OS_start_process_v (int pipe_control,
const SOCKTYPE *lsocks,
const char *filename,
char *const argv[]); char *const argv[]);
/** /**
* Handle to a command action. * Handle to a command action.
*/ */
struct GNUNET_OS_CommandHandle; struct GNUNET_OS_CommandHandle;
/** /**
* Type of a function to process a line of output. * Type of a function to process a line of output.
* *
skipping to change at line 341 skipping to change at line 375
* thus only be used if the child process is known to have terminated * thus only be used if the child process is known to have terminated
* or to terminate very soon. * or to terminate very soon.
* *
* @param proc pointer to process structure of the process to wait for * @param proc pointer to process structure of the process to wait for
* @return GNUNET_OK on success, GNUNET_SYSERR otherwise * @return GNUNET_OK on success, GNUNET_SYSERR otherwise
*/ */
int int
GNUNET_OS_process_wait (struct GNUNET_OS_Process *proc); GNUNET_OS_process_wait (struct GNUNET_OS_Process *proc);
/** /**
* Connects this process to its parent via pipe * Connects this process to its parent via pipe;
* essentially, the parent control handler will read signal numbers
* from the 'GNUNET_OS_CONTROL_PIPE' (as given in an environment
* variable) and raise those signals.
*
* @param cls closure (unused)
* @param tc scheduler context (unused)
*/ */
void void
GNUNET_OS_install_parent_control_handler (void *cls, GNUNET_OS_install_parent_control_handler (void *cls,
const struct const struct
GNUNET_SCHEDULER_TaskContext *tc) ; GNUNET_SCHEDULER_TaskContext *tc) ;
/** /**
* Check whether an executable exists and possibly * Check whether an executable exists and possibly
* if the suid bit is set on the file. * if the suid bit is set on the file.
* Attempts to find the file using the current * Attempts to find the file using the current
 End of changes. 9 change blocks. 
5 lines changed or deleted 46 lines changed or added


 gnunet_peer_lib.h   gnunet_peer_lib.h 
skipping to change at line 95 skipping to change at line 95
/** /**
* Convert an interned PID to a normal peer identity. * Convert an interned PID to a normal peer identity.
* *
* @param id interned PID to convert * @param id interned PID to convert
* @param pid where to write the normal peer identity * @param pid where to write the normal peer identity
*/ */
void void
GNUNET_PEER_resolve (GNUNET_PEER_Id id, struct GNUNET_PeerIdentity *pid); GNUNET_PEER_resolve (GNUNET_PEER_Id id, struct GNUNET_PeerIdentity *pid);
#if 0 /* keep Emacsens' auto-indent happy */
{
#endif
#ifdef __cplusplus
}
#endif
/* ifndef GNUNET_PEER_LIB_H */ /* ifndef GNUNET_PEER_LIB_H */
#endif #endif
/* end of gnunet_peer_lib.h */ /* end of gnunet_peer_lib.h */
 End of changes. 1 change blocks. 
0 lines changed or deleted 7 lines changed or added


 gnunet_protocols.h   gnunet_protocols.h 
skipping to change at line 515 skipping to change at line 515
/** /**
* Peer tries to find data in DHT. * Peer tries to find data in DHT.
*/ */
#define GNUNET_MESSAGE_TYPE_DHT_P2P_GET 147 #define GNUNET_MESSAGE_TYPE_DHT_P2P_GET 147
/** /**
* Data is returned to peer from DHT. * Data is returned to peer from DHT.
*/ */
#define GNUNET_MESSAGE_TYPE_DHT_P2P_RESULT 148 #define GNUNET_MESSAGE_TYPE_DHT_P2P_RESULT 148
/**
* Request / receive information about transiting GETs
*/
#define GNUNET_MESSAGE_TYPE_DHT_MONITOR_GET 149
/**
* Request / receive information about transiting GET responses
*/
#define GNUNET_MESSAGE_TYPE_DHT_MONITOR_GET_RESP 150
/**
* Request / receive information about transiting PUTs
*/
#define GNUNET_MESSAGE_TYPE_DHT_MONITOR_PUT 151
/**
* Request / receive information about transiting PUT responses (TODO)
*/
#define GNUNET_MESSAGE_TYPE_DHT_MONITOR_PUT_RESP 152
/************************************************************************** ***** /************************************************************************** *****
* HOSTLIST message types * HOSTLIST message types
************************************************************************** ****/ ************************************************************************** ****/
/** /**
* Hostlist advertisement message * Hostlist advertisement message
*/ */
#define GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT 160 #define GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT 160
/************************************************************************** ***** /************************************************************************** *****
skipping to change at line 569 skipping to change at line 589
/************************************************************************** ***** /************************************************************************** *****
* VPN message types * VPN message types
************************************************************************** ****/ ************************************************************************** ****/
/** /**
* Type of messages between the gnunet-vpn-helper and the daemon * Type of messages between the gnunet-vpn-helper and the daemon
*/ */
#define GNUNET_MESSAGE_TYPE_VPN_HELPER 185 #define GNUNET_MESSAGE_TYPE_VPN_HELPER 185
/** /**
* Type of messages containing an UDP packet for a service * Type of messages containing an ICMP packet for a service.
*/
#define GNUNET_MESSAGE_TYPE_VPN_ICMP_TO_SERVICE 190
/**
* Type of messages containing an ICMP packet for the Internet.
*/
#define GNUNET_MESSAGE_TYPE_VPN_ICMP_TO_INTERNET 191
/**
* Type of messages containing an ICMP packet for the VPN
*/
#define GNUNET_MESSAGE_TYPE_VPN_ICMP_TO_VPN 192
/**
* Type of messages containing an DNS request for a DNS exit service.
*/
#define GNUNET_MESSAGE_TYPE_VPN_DNS_TO_INTERNET 193
/**
* Type of messages containing an DNS reply from a DNS exit service.
*/
#define GNUNET_MESSAGE_TYPE_VPN_DNS_FROM_INTERNET 194
/**
* Type of messages containing an TCP packet for a service.
*/ */
#define GNUNET_MESSAGE_TYPE_VPN_SERVICE_UDP 186 #define GNUNET_MESSAGE_TYPE_VPN_TCP_TO_SERVICE_START 195
/** /**
* Type of messages containing an UDP packet from a service * Type of messages containing an TCP packet for the Internet.
*/ */
#define GNUNET_MESSAGE_TYPE_VPN_SERVICE_UDP_BACK 187 #define GNUNET_MESSAGE_TYPE_VPN_TCP_TO_INTERNET_START 196
/** /**
* Type of messages containing an TCP packet for a service * Type of messages containing an TCP packet of an established connection.
*/ */
#define GNUNET_MESSAGE_TYPE_VPN_SERVICE_TCP 188 #define GNUNET_MESSAGE_TYPE_VPN_TCP_DATA_TO_EXIT 197
/** /**
* Type of messages containing an TCP packet from a service * Type of messages containing an TCP packet of an established connection.
*/ */
#define GNUNET_MESSAGE_TYPE_VPN_SERVICE_TCP_BACK 189 #define GNUNET_MESSAGE_TYPE_VPN_TCP_DATA_TO_VPN 198
/** /**
* Type of messages containing an UDP packet for a remote host * Type of messages containing an UDP packet for a service.
*/ */
#define GNUNET_MESSAGE_TYPE_VPN_REMOTE_UDP 190 #define GNUNET_MESSAGE_TYPE_VPN_UDP_TO_SERVICE 199
/**
* Type of messages containing an UDP packet for the Internet.
*/
#define GNUNET_MESSAGE_TYPE_VPN_UDP_TO_INTERNET 200
/** /**
* Type of messages containing an UDP packet from a remote host * Type of messages containing an UDP packet from a remote host
*/ */
#define GNUNET_MESSAGE_TYPE_VPN_REMOTE_UDP_BACK 191 #define GNUNET_MESSAGE_TYPE_VPN_UDP_REPLY 201
/** /**
* Type of messages containing an TCP packet for a remote host * Client asks VPN service to setup an IP to redirect traffic
* via an exit node to some global IP address.
*/ */
#define GNUNET_MESSAGE_TYPE_VPN_REMOTE_TCP 192 #define GNUNET_MESSAGE_TYPE_VPN_CLIENT_REDIRECT_TO_IP 202
/** /**
* Type of messages containing an TCP packet from a remote host * Client asks VPN service to setup an IP to redirect traffic
* to some peer offering a service.
*/ */
#define GNUNET_MESSAGE_TYPE_VPN_REMOTE_TCP_BACK 193 #define GNUNET_MESSAGE_TYPE_VPN_CLIENT_REDIRECT_TO_SERVICE 203
/**
* VPN service responds to client with an IP to use for the
* requested redirection.
*/
#define GNUNET_MESSAGE_TYPE_VPN_CLIENT_USE_IP 204
/************************************************************************** ***** /************************************************************************** *****
* VPN-DNS message types * VPN-DNS message types
************************************************************************** ****/ ************************************************************************** ****/
/** /**
* Type of messages to query the local service-dns * Initial message from client to DNS service for registration.
*/ */
#define GNUNET_MESSAGE_TYPE_VPN_DNS_LOCAL_QUERY_DNS 205 #define GNUNET_MESSAGE_TYPE_DNS_CLIENT_INIT 211
/**
* Type of messages the local service-dns responds with
*/
#define GNUNET_MESSAGE_TYPE_VPN_DNS_LOCAL_RESPONSE_DNS 206
/** /**
* Type of messages to instruct the local service-dns to rehijack the dns * Type of messages between the gnunet-helper-dns and the service
*/ */
#define GNUNET_MESSAGE_TYPE_REHIJACK 207 #define GNUNET_MESSAGE_TYPE_DNS_CLIENT_REQUEST 212
/** /**
* Type of messages to send a DNS-query to another peer * Type of messages between the gnunet-helper-dns and the service
*/ */
#define GNUNET_MESSAGE_TYPE_VPN_REMOTE_QUERY_DNS 208 #define GNUNET_MESSAGE_TYPE_DNS_CLIENT_RESPONSE 213
/** /**
* Type of messages to send a DNS-answer to another peer * Type of messages between the gnunet-helper-dns and the service
*/ */
#define GNUNET_MESSAGE_TYPE_VPN_REMOTE_ANSWER_DNS 209 #define GNUNET_MESSAGE_TYPE_DNS_HELPER 214
/************************************************************************** ***** /************************************************************************** *****
* MESH message types * MESH message types
************************************************************************** ****/ ************************************************************************** ****/
/** /**
* Type of message used to transport messages throug a MESH-tunnel (LEGACY) * Type of message used to transport messages throug a MESH-tunnel (LEGACY)
*/ */
#define GNUNET_MESSAGE_TYPE_MESH 215 #define GNUNET_MESSAGE_TYPE_MESH 215
skipping to change at line 1077 skipping to change at line 1134
/** /**
* Request to iterate over all known addresses. * Request to iterate over all known addresses.
*/ */
#define GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE 383 #define GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE 383
/** /**
* Message send by a peer to notify the other to keep the session alive. * Message send by a peer to notify the other to keep the session alive.
*/ */
#define GNUNET_MESSAGE_TYPE_TRANSPORT_BROADCAST_BEACON 384 #define GNUNET_MESSAGE_TYPE_TRANSPORT_BROADCAST_BEACON 384
/**************************************************************************
*****
* STREAM LIRBRARY MESSAGES
**************************************************************************
****/
/**
* Message containing data exchanged between stream end-points over mesh.
*/
#define GNUNET_MESSAGE_TYPE_STREAM_DATA 400
/**
* ACK message
*/
#define GNUNET_MESSAGE_TYPE_STREAM_ACK 401
/**
* Handshake hello message
*/
#define GNUNET_MESSAGE_TYPE_STREAM_HELLO 402
/**
* Handshake hello acknowledgement message
*/
#define GNUNET_MESSAGE_TYPE_STREAM_HELLO_ACK 403
/**
* Reset message
*/
#define GNUNET_MESSAGE_TYPE_STREAM_RESET 404
/**
* Transmit close message (data transmission no longer possible after this
* message)
*/
#define GNUNET_MESSAGE_TYPE_STREAM_TRANSMIT_CLOSE 405
/**
* Transmit close acknowledgement message
*/
#define GNUNET_MESSAGE_TYPE_STREAM_TRANSMIT_CLOSE_ACK 406
/**
* Receive close message (data is no loger read by the receiver after this
* message)
*/
#define GNUNET_MESSAGE_TYPE_STREAM_RECEIVE_CLOSE 407
/**
* Receive close acknowledgement message
*/
#define GNUNET_MESSAGE_TYPE_STREAM_RECEIVE_CLOSE_ACK 408
/**
* Stream close message (data is no longer sent or read after this message)
*/
#define GNUNET_MESSAGE_TYPE_STREAM_CLOSE 409
/**
* Close acknowledgement message
*/
#define GNUNET_MESSAGE_TYPE_STREAM_CLOSE_ACK 410
/**************************************************************************
*****
* FS-PUBLISH-HELPER IPC Messages
**************************************************************************
****/
/**
* Progress information from the helper: found a file
*/
#define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_PROGRESS_FILE 420
/**
* Progress information from the helper: found a directory
*/
#define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_PROGRESS_DIRECTORY 421
/**
* Error signal from the helper.
*/
#define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_ERROR 422
/**
* Signal that helper skipped a file.
*/
#define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_SKIP_FILE 423
/**
* Signal that helper is done scanning the directory tree.
*/
#define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_COUNTING_DONE 424
/**
* Extracted meta data from the helper.
*/
#define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_META_DATA 425
/**
* Signal that helper is done.
*/
#define GNUNET_MESSAGE_TYPE_FS_PUBLISH_HELPER_FINISHED 426
/**************************************************************************
*****
* NAMESTORE message types
**************************************************************************
****/
/**
* Request update and listing of a peer.
*/
#define GNUNET_MESSAGE_TYPE_NAMESTORE_START 430
/** /**
* Next available: 400 * Next available: 440
*/ */
/************************************************************************** ***** /************************************************************************** *****
* TODO: we need a way to register message types centrally (via some webpag e). * TODO: we need a way to register message types centrally (via some webpag e).
* For now: unofficial extensions should start at 48k, internal extensions * For now: unofficial extensions should start at 48k, internal extensions
* define here should leave some room (4-10 additional messages to the prev ious * define here should leave some room (4-10 additional messages to the prev ious
* extension). * extension).
************************************************************************** ****/ ************************************************************************** ****/
/** /**
 End of changes. 26 change blocks. 
28 lines changed or deleted 200 lines changed or added


 gnunet_resolver_service.h   gnunet_resolver_service.h 
skipping to change at line 77 skipping to change at line 77
/** /**
* Destroy the connection to the resolver service. * Destroy the connection to the resolver service.
*/ */
void void
GNUNET_RESOLVER_disconnect (void); GNUNET_RESOLVER_disconnect (void);
/** /**
* Convert a string to one or more IP addresses. * Convert a string to one or more IP addresses.
* *
* @param hostname the hostname to resolve * @param hostname the hostname to resolve
* @param domain AF_INET or AF_INET6; use AF_UNSPEC for "any" * @param af AF_INET or AF_INET6; use AF_UNSPEC for "any"
* @param callback function to call with addresses * @param callback function to call with addresses
* @param callback_cls closure for callback * @param callback_cls closure for callback
* @param timeout how long to try resolving * @param timeout how long to try resolving
* @return handle that can be used to cancel the request, NULL on error * @return handle that can be used to cancel the request, NULL on error
*/ */
struct GNUNET_RESOLVER_RequestHandle * struct GNUNET_RESOLVER_RequestHandle *
GNUNET_RESOLVER_ip_get (const char *hostname, int domain, GNUNET_RESOLVER_ip_get (const char *hostname, int af,
struct GNUNET_TIME_Relative timeout, struct GNUNET_TIME_Relative timeout,
GNUNET_RESOLVER_AddressCallback callback, GNUNET_RESOLVER_AddressCallback callback,
void *callback_cls); void *callback_cls);
/** /**
* Resolve our hostname to an IP address. * Resolve our hostname to an IP address.
* *
* @param domain AF_INET or AF_INET6; use AF_UNSPEC for "any" * @param af AF_INET or AF_INET6; use AF_UNSPEC for "any"
* @param callback function to call with addresses * @param callback function to call with addresses
* @param cls closure for callback * @param cls closure for callback
* @param timeout how long to try resolving * @param timeout how long to try resolving
* @return handle that can be used to cancel the request, NULL on error * @return handle that can be used to cancel the request, NULL on error
*/ */
struct GNUNET_RESOLVER_RequestHandle * struct GNUNET_RESOLVER_RequestHandle *
GNUNET_RESOLVER_hostname_resolve (int domain, GNUNET_RESOLVER_hostname_resolve (int af,
struct GNUNET_TIME_Relative timeout, struct GNUNET_TIME_Relative timeout,
GNUNET_RESOLVER_AddressCallback callback, GNUNET_RESOLVER_AddressCallback callback,
void *cls); void *cls);
/** /**
* Function called by the resolver for each hostname obtained from DNS. * Function called by the resolver for each hostname obtained from DNS.
* *
* @param cls closure * @param cls closure
* @param hostname one of the names for the host, NULL * @param hostname one of the names for the host, NULL
* on the last call to the callback * on the last call to the callback
 End of changes. 4 change blocks. 
4 lines changed or deleted 4 lines changed or added


 gnunet_scheduler_lib.h   gnunet_scheduler_lib.h 
skipping to change at line 112 skipping to change at line 112
GNUNET_SCHEDULER_PRIORITY_IDLE = 1, GNUNET_SCHEDULER_PRIORITY_IDLE = 1,
/** /**
* Run as background job (higher than idle, * Run as background job (higher than idle,
* lower than default). * lower than default).
*/ */
GNUNET_SCHEDULER_PRIORITY_BACKGROUND = 2, GNUNET_SCHEDULER_PRIORITY_BACKGROUND = 2,
/** /**
* Run with the default priority (normal * Run with the default priority (normal
* P2P operations). Higher than BACKGROUND. * P2P operations). Any task that is scheduled
* without an explicit priority being specified
* will run with this priority.
*/ */
GNUNET_SCHEDULER_PRIORITY_DEFAULT = 3, GNUNET_SCHEDULER_PRIORITY_DEFAULT = 3,
/** /**
* Run with high priority (important requests). * Run with high priority (important requests).
* Higher than DEFAULT. * Higher than DEFAULT.
*/ */
GNUNET_SCHEDULER_PRIORITY_HIGH = 4, GNUNET_SCHEDULER_PRIORITY_HIGH = 4,
/** /**
skipping to change at line 257 skipping to change at line 259
GNUNET_SCHEDULER_get_load (enum GNUNET_SCHEDULER_Priority p); GNUNET_SCHEDULER_get_load (enum GNUNET_SCHEDULER_Priority p);
/** /**
* Obtain the reason code for why the current task was * Obtain the reason code for why the current task was
* started. Will return the same value as * started. Will return the same value as
* the GNUNET_SCHEDULER_TaskContext's reason field. * the GNUNET_SCHEDULER_TaskContext's reason field.
* *
* * @return reason(s) why the current task is run * * @return reason(s) why the current task is run
*/ */
enum GNUNET_SCHEDULER_Reason enum GNUNET_SCHEDULER_Reason
GNUNET_SCHEDULER_get_reason (); GNUNET_SCHEDULER_get_reason (void);
/** /**
* Cancel the task with the specified identifier. * Cancel the task with the specified identifier.
* The task must not yet have run. * The task must not yet have run.
* *
* * @param task id of the task to cancel * * @param task id of the task to cancel
* @return the closure of the callback of the cancelled task * @return the closure of the callback of the cancelled task
*/ */
void * void *
GNUNET_SCHEDULER_cancel (GNUNET_SCHEDULER_TaskIdentifier task); GNUNET_SCHEDULER_cancel (GNUNET_SCHEDULER_TaskIdentifier task);
skipping to change at line 283 skipping to change at line 285
* *
* * @param task main function of the task * * @param task main function of the task
* @param task_cls closure of task * @param task_cls closure of task
* @param reason reason for task invocation * @param reason reason for task invocation
*/ */
void void
GNUNET_SCHEDULER_add_continuation (GNUNET_SCHEDULER_Task task, void *task_c ls, GNUNET_SCHEDULER_add_continuation (GNUNET_SCHEDULER_Task task, void *task_c ls,
enum GNUNET_SCHEDULER_Reason reason); enum GNUNET_SCHEDULER_Reason reason);
/** /**
* Continue the current execution with the given function. This is
* similar to the other "add" functions except that there is no delay
* and the reason code can be specified.
*
* @param task main function of the task
* @param task_cls closure for 'main'
* @param reason reason for task invocation
* @param priority priority to use for the task
*/
void
GNUNET_SCHEDULER_add_continuation_with_priority (GNUNET_SCHEDULER_Task task
, void *task_cls,
enum GNUNET_SCHEDULER_Reaso
n reason,
enum GNUNET_SCHEDULER_Prior
ity priority);
/**
* Schedule a new task to be run after the specified prerequisite task * Schedule a new task to be run after the specified prerequisite task
* has completed. It will be run with the priority of the calling * has completed. It will be run with DEFAULT priority.
* task.
* *
* * @param prerequisite_task run this task after the task with the given * * @param prerequisite_task run this task after the task with the given
* task identifier completes (and any of our other * task identifier completes (and any of our other
* conditions, such as delay, read or write-readiness * conditions, such as delay, read or write-readiness
* are satisfied). Use GNUNET_SCHEDULER_NO_TASK to not have any de pendency * are satisfied). Use GNUNET_SCHEDULER_NO_TASK to not have any de pendency
* on completion of other tasks (this will cause the task to run as * on completion of other tasks (this will cause the task to run as
* soon as possible). * soon as possible).
* @param task main function of the task * @param task main function of the task
* @param task_cls closure of task * @param task_cls closure of task
* @return unique task identifier for the job * @return unique task identifier for the job
skipping to change at line 317 skipping to change at line 333
* @param task_cls closure of task * @param task_cls closure of task
* @return unique task identifier for the job * @return unique task identifier for the job
* only valid until "task" is started! * only valid until "task" is started!
*/ */
GNUNET_SCHEDULER_TaskIdentifier GNUNET_SCHEDULER_TaskIdentifier
GNUNET_SCHEDULER_add_with_priority (enum GNUNET_SCHEDULER_Priority prio, GNUNET_SCHEDULER_add_with_priority (enum GNUNET_SCHEDULER_Priority prio,
GNUNET_SCHEDULER_Task task, void *task_ cls); GNUNET_SCHEDULER_Task task, void *task_ cls);
/** /**
* Schedule a new task to be run as soon as possible. The task * Schedule a new task to be run as soon as possible. The task
* will be run with the priority of the calling task. * will be run with the DEFAULT priority.
* *
* * @param task main function of the task * * @param task main function of the task
* @param task_cls closure of task * @param task_cls closure of task
* @return unique task identifier for the job * @return unique task identifier for the job
* only valid until "task" is started! * only valid until "task" is started!
*/ */
GNUNET_SCHEDULER_TaskIdentifier GNUNET_SCHEDULER_TaskIdentifier
GNUNET_SCHEDULER_add_now (GNUNET_SCHEDULER_Task task, void *task_cls); GNUNET_SCHEDULER_add_now (GNUNET_SCHEDULER_Task task, void *task_cls);
/** /**
skipping to change at line 349 skipping to change at line 365
* only valid until "task" is started! * only valid until "task" is started!
*/ */
GNUNET_SCHEDULER_TaskIdentifier GNUNET_SCHEDULER_TaskIdentifier
GNUNET_SCHEDULER_add_now_with_lifeness (int lifeness, GNUNET_SCHEDULER_add_now_with_lifeness (int lifeness,
GNUNET_SCHEDULER_Task task, GNUNET_SCHEDULER_Task task,
void *task_cls); void *task_cls);
/** /**
* Schedule a new task to be run with a specified delay. The task * Schedule a new task to be run with a specified delay. The task
* will be scheduled for execution once the delay has expired. It * will be scheduled for execution once the delay has expired. It
* will be run with the priority of the calling task. * will be run with the DEFAULT priority.
* *
* * @param delay when should this operation time out? Use * * @param delay when should this operation time out? Use
* GNUNET_TIME_UNIT_FOREVER_REL for "on shutdown" * GNUNET_TIME_UNIT_FOREVER_REL for "on shutdown"
* @param task main function of the task * @param task main function of the task
* @param task_cls closure of task * @param task_cls closure of task
* @return unique task identifier for the job * @return unique task identifier for the job
* only valid until "task" is started! * only valid until "task" is started!
*/ */
GNUNET_SCHEDULER_TaskIdentifier GNUNET_SCHEDULER_TaskIdentifier
GNUNET_SCHEDULER_add_delayed (struct GNUNET_TIME_Relative delay, GNUNET_SCHEDULER_add_delayed (struct GNUNET_TIME_Relative delay,
GNUNET_SCHEDULER_Task task, void *task_cls); GNUNET_SCHEDULER_Task task, void *task_cls);
/** /**
* Schedule a new task to be run with a specified delay. The task
* will be scheduled for execution once the delay has expired.
*
* @param delay when should this operation time out? Use
* GNUNET_TIME_UNIT_FOREVER_REL for "on shutdown"
* @param priority priority to use for the task
* @param task main function of the task
* @param task_cls closure of task
* @return unique task identifier for the job
* only valid until "task" is started!
*/
GNUNET_SCHEDULER_TaskIdentifier
GNUNET_SCHEDULER_add_delayed_with_priority (struct GNUNET_TIME_Relative del
ay,
enum GNUNET_SCHEDULER_Priority p
riority,
GNUNET_SCHEDULER_Task task, void
*task_cls);
/**
* Schedule a new task to be run with a specified delay or when the * Schedule a new task to be run with a specified delay or when the
* specified file descriptor is ready for reading. The delay can be * specified file descriptor is ready for reading. The delay can be
* used as a timeout on the socket being ready. The task will be * used as a timeout on the socket being ready. The task will be
* scheduled for execution once either the delay has expired or the * scheduled for execution once either the delay has expired or the
* socket operation is ready. It will be run with the priority of * socket operation is ready. It will be run with the DEFAULT priority.
* the calling task.
* *
* * @param delay when should this operation time out? Use * * @param delay when should this operation time out? Use
* GNUNET_TIME_UNIT_FOREVER_REL for "on shutdown" * GNUNET_TIME_UNIT_FOREVER_REL for "on shutdown"
* @param rfd read file-descriptor * @param rfd read file-descriptor
* @param task main function of the task * @param task main function of the task
* @param task_cls closure of task * @param task_cls closure of task
* @return unique task identifier for the job * @return unique task identifier for the job
* only valid until "task" is started! * only valid until "task" is started!
*/ */
GNUNET_SCHEDULER_TaskIdentifier GNUNET_SCHEDULER_TaskIdentifier
GNUNET_SCHEDULER_add_read_net (struct GNUNET_TIME_Relative delay, GNUNET_SCHEDULER_add_read_net (struct GNUNET_TIME_Relative delay,
struct GNUNET_NETWORK_Handle *rfd, struct GNUNET_NETWORK_Handle *rfd,
GNUNET_SCHEDULER_Task task, void *task_cls); GNUNET_SCHEDULER_Task task, void *task_cls);
/** /**
* Schedule a new task to be run with a specified delay or when the * Schedule a new task to be run with a specified delay or when the
* specified file descriptor is ready for writing. The delay can be * specified file descriptor is ready for writing. The delay can be
* used as a timeout on the socket being ready. The task will be * used as a timeout on the socket being ready. The task will be
* scheduled for execution once either the delay has expired or the * scheduled for execution once either the delay has expired or the
* socket operation is ready. It will be run with the priority of * socket operation is ready. It will be run with the DEFAULT priority.
* the calling task.
* *
* * @param delay when should this operation time out? Use * * @param delay when should this operation time out? Use
* GNUNET_TIME_UNIT_FOREVER_REL for "on shutdown" * GNUNET_TIME_UNIT_FOREVER_REL for "on shutdown"
* @param wfd write file-descriptor * @param wfd write file-descriptor
* @param task main function of the task * @param task main function of the task
* @param task_cls closure of task * @param task_cls closure of task
* @return unique task identifier for the job * @return unique task identifier for the job
* only valid until "task" is started! * only valid until "task" is started!
*/ */
GNUNET_SCHEDULER_TaskIdentifier GNUNET_SCHEDULER_TaskIdentifier
GNUNET_SCHEDULER_add_write_net (struct GNUNET_TIME_Relative delay, GNUNET_SCHEDULER_add_write_net (struct GNUNET_TIME_Relative delay,
struct GNUNET_NETWORK_Handle *wfd, struct GNUNET_NETWORK_Handle *wfd,
GNUNET_SCHEDULER_Task task, void *task_cls) ; GNUNET_SCHEDULER_Task task, void *task_cls) ;
/** /**
* Schedule a new task to be run with a specified delay or when the * Schedule a new task to be run with a specified delay or when the
* specified file descriptor is ready for reading. The delay can be * specified file descriptor is ready for reading. The delay can be
* used as a timeout on the socket being ready. The task will be * used as a timeout on the socket being ready. The task will be
* scheduled for execution once either the delay has expired or the * scheduled for execution once either the delay has expired or the
* socket operation is ready. It will be run with the priority of * socket operation is ready. It will be run with the DEFAULT priority.
* the calling task.
* *
* * @param delay when should this operation time out? Use * * @param delay when should this operation time out? Use
* GNUNET_TIME_UNIT_FOREVER_REL for "on shutdown" * GNUNET_TIME_UNIT_FOREVER_REL for "on shutdown"
* @param rfd read file-descriptor * @param rfd read file-descriptor
* @param task main function of the task * @param task main function of the task
* @param task_cls closure of task * @param task_cls closure of task
* @return unique task identifier for the job * @return unique task identifier for the job
* only valid until "task" is started! * only valid until "task" is started!
*/ */
GNUNET_SCHEDULER_TaskIdentifier GNUNET_SCHEDULER_TaskIdentifier
GNUNET_SCHEDULER_add_read_file (struct GNUNET_TIME_Relative delay, GNUNET_SCHEDULER_add_read_file (struct GNUNET_TIME_Relative delay,
const struct GNUNET_DISK_FileHandle *rfd, const struct GNUNET_DISK_FileHandle *rfd,
GNUNET_SCHEDULER_Task task, void *task_cls) ; GNUNET_SCHEDULER_Task task, void *task_cls) ;
/** /**
* Schedule a new task to be run with a specified delay or when the * Schedule a new task to be run with a specified delay or when the
* specified file descriptor is ready for writing. The delay can be * specified file descriptor is ready for writing. The delay can be
* used as a timeout on the socket being ready. The task will be * used as a timeout on the socket being ready. The task will be
* scheduled for execution once either the delay has expired or the * scheduled for execution once either the delay has expired or the
* socket operation is ready. It will be run with the priority of * socket operation is ready. It will be run with the DEFAULT priority.
* the calling task.
* *
* * @param delay when should this operation time out? Use * * @param delay when should this operation time out? Use
* GNUNET_TIME_UNIT_FOREVER_REL for "on shutdown" * GNUNET_TIME_UNIT_FOREVER_REL for "on shutdown"
* @param wfd write file-descriptor * @param wfd write file-descriptor
* @param task main function of the task * @param task main function of the task
* @param task_cls closure of task * @param task_cls closure of task
* @return unique task identifier for the job * @return unique task identifier for the job
* only valid until "task" is started! * only valid until "task" is started!
*/ */
GNUNET_SCHEDULER_TaskIdentifier GNUNET_SCHEDULER_TaskIdentifier
 End of changes. 11 change blocks. 
14 lines changed or deleted 49 lines changed or added


 gnunet_server_lib.h   gnunet_server_lib.h 
skipping to change at line 231 skipping to change at line 231
* times out or activity happens on the socket). * times out or activity happens on the socket).
* *
* @param client the client to update * @param client the client to update
* @param timeout new timeout for activities on the socket * @param timeout new timeout for activities on the socket
*/ */
void void
GNUNET_SERVER_client_set_timeout (struct GNUNET_SERVER_Client *client, GNUNET_SERVER_client_set_timeout (struct GNUNET_SERVER_Client *client,
struct GNUNET_TIME_Relative timeout); struct GNUNET_TIME_Relative timeout);
/** /**
* Set if a client should finish a pending write when disconnecting.
*/
void
GNUNET_SERVER_client_set_finish_pending_write (struct GNUNET_SERVER_Client
*client,
int finish);
/**
* Disable the warning the server issues if a message is not acknowledged * Disable the warning the server issues if a message is not acknowledged
* in a timely fashion. Use this call if a client is intentionally delayed * in a timely fashion. Use this call if a client is intentionally delayed
* for a while. Only applies to the current message. * for a while. Only applies to the current message.
* *
* @param client client for which to disable the warning * @param client client for which to disable the warning
*/ */
void void
GNUNET_SERVER_disable_receive_done_warning (struct GNUNET_SERVER_Client GNUNET_SERVER_disable_receive_done_warning (struct GNUNET_SERVER_Client
*client); *client);
skipping to change at line 597 skipping to change at line 604
int purge, int one_shot); int purge, int one_shot);
/** /**
* Destroys a tokenizer. * Destroys a tokenizer.
* *
* @param mst tokenizer to destroy * @param mst tokenizer to destroy
*/ */
void void
GNUNET_SERVER_mst_destroy (struct GNUNET_SERVER_MessageStreamTokenizer *mst ); GNUNET_SERVER_mst_destroy (struct GNUNET_SERVER_MessageStreamTokenizer *mst );
/**
* Signature of a function to create a custom tokenizer.
*
* @param cls closure from 'GNUNET_SERVER_set_callbacks'
* @param client handle to client the tokenzier will be used for
* @return handle to custom tokenizer ('mst')
*/
typedef void* (*GNUNET_SERVER_MstCreateCallback) (void *cls,
struct GNUNET_SERVER_Clie
nt *client);
/**
* Signature of a function to destroy a custom tokenizer.
*
* @param cls closure from 'GNUNET_SERVER_set_callbacks'
* @param mst custom tokenizer handle
*/
typedef void (*GNUNET_SERVER_MstDestroyCallback) (void *cls, void *mst);
/**
* Signature of a function to destroy a custom tokenizer.
*
* @param cls closure from 'GNUNET_SERVER_set_callbacks'
* @param mst custom tokenizer handle
* @param client_identity ID of client for which this is a buffer,
* can be NULL (will be passed back to 'cb')
* @param buf input data to add
* @param size number of bytes in buf
* @param purge should any excess bytes in the buffer be discarded
* (i.e. for packet-based services like UDP)
* @param one_shot only call callback once, keep rest of message in buffer
* @return GNUNET_OK if we are done processing (need more data)
* GNUNET_NO if one_shot was set and we have another message ready
* GNUNET_SYSERR if the data stream is corrupt
*/
typedef int (*GNUNET_SERVER_MstReceiveCallback) (void *cls, void *mst,
struct GNUNET_SERVER_Clien
t *client,
const char *buf, size_t si
ze,
int purge, int one_shot);
/**
* Change functions used by the server to tokenize the message stream.
* (very rarely used).
*
* @param server server to modify
* @param create new tokenizer initialization function
* @param destroy new tokenizer destruction function
* @param receive new tokenizer receive function
* @param cls closure for 'create', 'receive', 'destroy'
*/
void
GNUNET_SERVER_set_callbacks (struct GNUNET_SERVER_Handle *server,
GNUNET_SERVER_MstCreateCallback create,
GNUNET_SERVER_MstDestroyCallback destroy,
GNUNET_SERVER_MstReceiveCallback receive,
void *cls);
#if 0 /* keep Emacsens' auto-indent happy */ #if 0 /* keep Emacsens' auto-indent happy */
{ {
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
/* ifndef GNUNET_SERVER_LIB_H */ /* ifndef GNUNET_SERVER_LIB_H */
#endif #endif
/* end of gnunet_server_lib.h */ /* end of gnunet_server_lib.h */
 End of changes. 2 change blocks. 
0 lines changed or deleted 67 lines changed or added


 gnunet_strings_lib.h   gnunet_strings_lib.h 
skipping to change at line 192 skipping to change at line 192
/** /**
* Give relative time in human-readable fancy format. * Give relative time in human-readable fancy format.
* *
* @param delta time in milli seconds * @param delta time in milli seconds
* @return string in human-readable form * @return string in human-readable form
*/ */
char * char *
GNUNET_STRINGS_relative_time_to_string (struct GNUNET_TIME_Relative delta); GNUNET_STRINGS_relative_time_to_string (struct GNUNET_TIME_Relative delta);
/**
* "man basename"
* Returns a pointer to a part of filename (allocates nothing)!
*
* @param filename filename to extract basename from
* @return short (base) name of the file (that is, everything following the
* last directory separator in filename. If filename ends with a
* directory separator, the result will be a zero-length string.
* If filename has no directory separators, the result is filename
* itself.
*/
const char *
GNUNET_STRINGS_get_short_name (const char *filename);
#if 0 /* keep Emacsens' auto-indent happy */ #if 0 /* keep Emacsens' auto-indent happy */
{ {
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
/* ifndef GNUNET_UTIL_STRING_H */ /* ifndef GNUNET_UTIL_STRING_H */
#endif #endif
/* end of gnunet_util_string.h */ /* end of gnunet_util_string.h */
 End of changes. 1 change blocks. 
0 lines changed or deleted 14 lines changed or added


 gnunet_testing_lib.h   gnunet_testing_lib.h 
skipping to change at line 503 skipping to change at line 503
* Check whether the given daemon is running. * Check whether the given daemon is running.
* *
* @param daemon the daemon to check * @param daemon the daemon to check
* @return GNUNET_YES if the daemon is up, GNUNET_NO if the * @return GNUNET_YES if the daemon is up, GNUNET_NO if the
* daemon is down, GNUNET_SYSERR on error. * daemon is down, GNUNET_SYSERR on error.
*/ */
int int
GNUNET_TESTING_test_daemon_running (struct GNUNET_TESTING_Daemon *daemon); GNUNET_TESTING_test_daemon_running (struct GNUNET_TESTING_Daemon *daemon);
/** /**
* Obtain the peer identity of the peer with the given configuration
* handle. This function reads the private key of the peer, obtains
* the public key and hashes it.
*
* @param cfg configuration of the peer
* @param pid where to store the peer identity
* @return GNUNET_OK on success, GNUNET_SYSERR on failure
*/
int
GNUNET_TESTING_get_peer_identity (const struct GNUNET_CONFIGURATION_Handle
*cfg,
struct GNUNET_PeerIdentity *pid);
/**
* Restart (stop and start) a GNUnet daemon. * Restart (stop and start) a GNUnet daemon.
* *
* @param d the daemon that should be restarted * @param d the daemon that should be restarted
* @param cb function called once the daemon is (re)started * @param cb function called once the daemon is (re)started
* @param cb_cls closure for cb * @param cb_cls closure for cb
*/ */
void void
GNUNET_TESTING_daemon_restart (struct GNUNET_TESTING_Daemon *d, GNUNET_TESTING_daemon_restart (struct GNUNET_TESTING_Daemon *d,
GNUNET_TESTING_NotifyDaemonRunning cb, GNUNET_TESTING_NotifyDaemonRunning cb,
void *cb_cls); void *cb_cls);
 End of changes. 1 change blocks. 
0 lines changed or deleted 14 lines changed or added


 gnunet_transport_plugin.h   gnunet_transport_plugin.h 
skipping to change at line 275 skipping to change at line 275
* GNUNET_SYSERR if the target disconnected; * GNUNET_SYSERR if the target disconnected;
* disconnect will ALSO be signalled using * disconnect will ALSO be signalled using
* the ReceiveCallback. * the ReceiveCallback.
*/ */
typedef void (*GNUNET_TRANSPORT_TransmitContinuation) (void *cls, typedef void (*GNUNET_TRANSPORT_TransmitContinuation) (void *cls,
const struct const struct
GNUNET_PeerIdentity * GNUNET_PeerIdentity *
target, int result); target, int result);
/** /**
* Function that can be used by the transport service to transmit
* a message using the plugin. Note that in the case of a
* peer disconnecting, the continuation MUST be called
* prior to the disconnect notification itself. This function
* will be called with this peer's HELLO message to initiate
* a fresh connection to another peer.
*
* @param cls closure
* @param target who should receive this message
* @param msgbuf the message to transmit
* @param msgbuf_size number of bytes in 'msgbuf'
* @param priority how important is the message (most plugins will
* ignore message priority and just FIFO)
* @param timeout how long to wait at most for the transmission (does not
* require plugins to discard the message after the timeout,
* just advisory for the desired delay; most plugins will ig
nore
* this as well)
* @param session which session must be used (or NULL for "any")
* @param addr the address to use (can be NULL if the plugin
* is "on its own" (i.e. re-use existing TCP connection))
* @param addrlen length of the address in bytes
* @param force_address GNUNET_YES if the plugin MUST use the given address
,
* GNUNET_NO means the plugin may use any other address and
* GNUNET_SYSERR means that only reliable existing
* bi-directional connections should be used (regardless
* of address)
* @param cont continuation to call once the message has
* been transmitted (or if the transport is ready
* for the next transmission call; or if the
* peer disconnected...); can be NULL
* @param cont_cls closure for cont
* @return number of bytes used (on the physical network, with overheads);
* -1 on hard errors (i.e. address invalid); 0 is a legal value
* and does NOT mean that the message was not transmitted (DV)
*/
typedef ssize_t (*GNUNET_TRANSPORT_TransmitFunction) (void *cls,
const struct
GNUNET_PeerIdentity *
target,
const char *msgbuf,
size_t msgbuf_size,
uint32_t priority,
struct
GNUNET_TIME_Relative
timeout,
struct Session * sess
ion,
const void *addr,
size_t addrlen,
int force_address,
GNUNET_TRANSPORT_Tran
smitContinuation
cont, void *cont_cls)
;
/**
* The new send function with just the session and no address * The new send function with just the session and no address
* *
* Function that can be used by the transport service to transmit * Function that can be used by the transport service to transmit
* a message using the plugin. Note that in the case of a * a message using the plugin. Note that in the case of a
* peer disconnecting, the continuation MUST be called * peer disconnecting, the continuation MUST be called
* prior to the disconnect notification itself. This function * prior to the disconnect notification itself. This function
* will be called with this peer's HELLO message to initiate * will be called with this peer's HELLO message to initiate
* a fresh connection to another peer. * a fresh connection to another peer.
* *
* @param cls closure * @param cls closure
* @param target who should receive this message * @param session which session must be used
* @param msgbuf the message to transmit * @param msgbuf the message to transmit
* @param msgbuf_size number of bytes in 'msgbuf' * @param msgbuf_size number of bytes in 'msgbuf'
* @param priority how important is the message (most plugins will * @param priority how important is the message (most plugins will
* ignore message priority and just FIFO) * ignore message priority and just FIFO)
* @param timeout how long to wait at most for the transmission (does not * @param timeout how long to wait at most for the transmission (does not
* require plugins to discard the message after the timeout, * require plugins to discard the message after the timeout,
* just advisory for the desired delay; most plugins will ig nore * just advisory for the desired delay; most plugins will ig nore
* this as well) * this as well)
* @param session which session must be used (or NULL for "any")
* @param addr the address to use (can be NULL if the plugin
* is "on its own" (i.e. re-use existing TCP connection))
* @param addrlen length of the address in bytes
* @param force_address GNUNET_YES if the plugin MUST use the given address
,
* GNUNET_NO means the plugin may use any other address and
* GNUNET_SYSERR means that only reliable existing
* bi-directional connections should be used (regardless
* of address)
* @param cont continuation to call once the message has * @param cont continuation to call once the message has
* been transmitted (or if the transport is ready * been transmitted (or if the transport is ready
* for the next transmission call; or if the * for the next transmission call; or if the
* peer disconnected...); can be NULL * peer disconnected...); can be NULL
* @param cont_cls closure for cont * @param cont_cls closure for cont
* @return number of bytes used (on the physical network, with overheads); * @return number of bytes used (on the physical network, with overheads);
* -1 on hard errors (i.e. address invalid); 0 is a legal value * -1 on hard errors (i.e. address invalid); 0 is a legal value
* and does NOT mean that the message was not transmitted (DV) * and does NOT mean that the message was not transmitted (DV)
*/ */
typedef ssize_t (*GNUNET_TRANSPORT_TransmitFunctionWithSession) (void *cls, typedef ssize_t (*GNUNET_TRANSPORT_TransmitFunction) (void *cls,
const struct struct Session *session,
GNUNET_PeerIdentity * const char *msgbuf, size_t msgbuf_size,
target, unsigned int priority,
const char *msgbuf, struct GNUNET_TIME_Relative to,
size_t msgbuf_size, GNUNET_TRANSPORT_TransmitContinuation cont, void *cont_cls);
uint32_t priority,
struct GNUNET_TIME_Re
lative timeout,
struct Session * sess
ion,
GNUNET_TRANSPORT_Tran
smitContinuation
cont, void *cont_cls)
;
/** /**
* Function that can be called to force a disconnect from the * Function that can be called to force a disconnect from the
* specified neighbour. This should also cancel all previously * specified neighbour. This should also cancel all previously
* scheduled transmissions. Obviously the transmission may have been * scheduled transmissions. Obviously the transmission may have been
* partially completed already, which is OK. The plugin is supposed * partially completed already, which is OK. The plugin is supposed
* to close the connection (if applicable) and no longer call the * to close the connection (if applicable) and no longer call the
* transmit continuation(s). * transmit continuation(s).
* *
* Finally, plugin MUST NOT call the services's receive function to * Finally, plugin MUST NOT call the services's receive function to
skipping to change at line 456 skipping to change at line 389
* and transport, GNUNET_SYSERR if not * and transport, GNUNET_SYSERR if not
*/ */
typedef int (*GNUNET_TRANSPORT_CheckAddress) (void *cls, const void *addr, typedef int (*GNUNET_TRANSPORT_CheckAddress) (void *cls, const void *addr,
size_t addrlen); size_t addrlen);
/** /**
* Create a new session to transmit data to the target * Create a new session to transmit data to the target
* This session will used to send data to this peer and the plugin will * This session will used to send data to this peer and the plugin will
* notify us by calling the env->session_end function * notify us by calling the env->session_end function
* *
* @param cls closure * @param cls the plugin
* @param target the neighbour id * @param target the neighbour id
* @param addr pointer to the address * @param addr pointer to the address
* @param addrlen length of addr * @param addrlen length of addr
* @return the session if the address is valid, NULL otherwise * @return the session if the address is valid, NULL otherwise
*/ */
typedef const void * (*GNUNET_TRANSPORT_CreateSession) (void *cls, typedef struct Session * (*GNUNET_TRANSPORT_CreateSession) (void *cls,
const struct GNUNET_PeerI const struct GNUNET_HELLO_Address *address);
dentity *target,
const void *addr,
size_t addrlen);
/** /**
* Function called for a quick conversion of the binary address to * Function called for a quick conversion of the binary address to
* a numeric address. Note that the caller must not free the * a numeric address. Note that the caller must not free the
* address and that the next call to this function is allowed * address and that the next call to this function is allowed
* to override the address again. * to override the address again.
* *
* @param cls closure * @param cls closure
* @param addr binary address * @param addr binary address
* @param addr_len length of the address * @param addr_len length of the address
skipping to change at line 504 skipping to change at line 435
/** /**
* Function that the transport service will use to transmit data to * Function that the transport service will use to transmit data to
* another peer. May be NULL for plugins that only support * another peer. May be NULL for plugins that only support
* receiving data. After this call, the plugin call the specified * receiving data. After this call, the plugin call the specified
* continuation with success or error before notifying us about the * continuation with success or error before notifying us about the
* target having disconnected. * target having disconnected.
*/ */
GNUNET_TRANSPORT_TransmitFunction send; GNUNET_TRANSPORT_TransmitFunction send;
/** /**
* New send function
* Will be renamed to "send" when implementation is done
*/
GNUNET_TRANSPORT_TransmitFunctionWithSession send_with_session;
/**
* Function that can be used to force the plugin to disconnect from * Function that can be used to force the plugin to disconnect from
* the given peer and cancel all previous transmissions (and their * the given peer and cancel all previous transmissions (and their
* continuations). * continuations).
*/ */
GNUNET_TRANSPORT_DisconnectFunction disconnect; GNUNET_TRANSPORT_DisconnectFunction disconnect;
/** /**
* Function to pretty-print addresses. NOTE: this function is not * Function to pretty-print addresses. NOTE: this function is not
* yet used by transport-service, but will be used in the future * yet used by transport-service, but will be used in the future
* once the transport-API has been completed. * once the transport-API has been completed.
skipping to change at line 545 skipping to change at line 469
/** /**
* Function that will be called to convert a binary address * Function that will be called to convert a binary address
* to a string (numeric conversion only). * to a string (numeric conversion only).
*/ */
GNUNET_TRANSPORT_AddressToString address_to_string; GNUNET_TRANSPORT_AddressToString address_to_string;
/** /**
* Function that will be called tell the plugin to create a session * Function that will be called tell the plugin to create a session
* object * object
*/ */
GNUNET_TRANSPORT_CreateSession create_session; GNUNET_TRANSPORT_CreateSession get_session;
}; };
#endif #endif
 End of changes. 8 change blocks. 
98 lines changed or deleted 11 lines changed or added


 gnunet_transport_service.h   gnunet_transport_service.h 
skipping to change at line 269 skipping to change at line 269
/** /**
* Handle to cancel a pending address lookup. * Handle to cancel a pending address lookup.
*/ */
struct GNUNET_TRANSPORT_AddressToStringContext; struct GNUNET_TRANSPORT_AddressToStringContext;
/** /**
* Convert a binary address into a human readable address. * Convert a binary address into a human readable address.
* *
* @param cfg configuration to use * @param cfg configuration to use
* @param address address to convert (binary format) * @param address address to convert (binary format)
* @param addressLen number of bytes in address
* @param numeric should (IP) addresses be displayed in numeric form * @param numeric should (IP) addresses be displayed in numeric form
* (otherwise do reverse DNS lookup) * (otherwise do reverse DNS lookup)
* @param nameTrans name of the transport to which the address belongs
* @param timeout how long is the lookup allowed to take at most * @param timeout how long is the lookup allowed to take at most
* @param aluc function to call with the results * @param aluc function to call with the results
* @param aluc_cls closure for aluc * @param aluc_cls closure for aluc
* @return handle to cancel the operation, NULL on error * @return handle to cancel the operation, NULL on error
*/ */
struct GNUNET_TRANSPORT_AddressToStringContext * struct GNUNET_TRANSPORT_AddressToStringContext *
GNUNET_TRANSPORT_address_to_string (const struct GNUNET_CONFIGURATION_Handl e GNUNET_TRANSPORT_address_to_string (const struct GNUNET_CONFIGURATION_Handl e
*cfg, *cfg,
const struct GNUNET_HELLO_Address *addr ess, const struct GNUNET_HELLO_Address *addr ess,
int numeric, int numeric,
skipping to change at line 344 skipping to change at line 342
/** /**
* Handle for blacklisting peers. * Handle for blacklisting peers.
*/ */
struct GNUNET_TRANSPORT_Blacklist; struct GNUNET_TRANSPORT_Blacklist;
/** /**
* Function that decides if a connection is acceptable or not. * Function that decides if a connection is acceptable or not.
* *
* @param cls closure * @param cls closure
* @param pid peer to approve or disapproave * @param pid peer to approve or disapproave
* @return GNUNET_OK if the connection is allowed * @return GNUNET_OK if the connection is allowed, GNUNET_SYSERR if not
*/ */
typedef int (*GNUNET_TRANSPORT_BlacklistCallback) (void *cls, typedef int (*GNUNET_TRANSPORT_BlacklistCallback) (void *cls,
const struct const struct
GNUNET_PeerIdentity * pi d); GNUNET_PeerIdentity * pi d);
/** /**
* Install a blacklist callback. The service will be queried for all * Install a blacklist callback. The service will be queried for all
* existing connections as well as any fresh connections to check if * existing connections as well as any fresh connections to check if
* they are permitted. If the blacklisting callback is unregistered, * they are permitted. If the blacklisting callback is unregistered,
* all hosts that were denied in the past will automatically be * all hosts that were denied in the past will automatically be
 End of changes. 3 change blocks. 
3 lines changed or deleted 1 lines changed or added


 gnunet_util_lib.h   gnunet_util_lib.h 
skipping to change at line 49 skipping to change at line 49
#include "gnunet_common.h" #include "gnunet_common.h"
#include "gnunet_bandwidth_lib.h" #include "gnunet_bandwidth_lib.h"
#include "gnunet_bio_lib.h" #include "gnunet_bio_lib.h"
#include "gnunet_client_lib.h" #include "gnunet_client_lib.h"
#include "gnunet_configuration_lib.h" #include "gnunet_configuration_lib.h"
#include "gnunet_connection_lib.h" #include "gnunet_connection_lib.h"
#include "gnunet_container_lib.h" #include "gnunet_container_lib.h"
#include "gnunet_crypto_lib.h" #include "gnunet_crypto_lib.h"
#include "gnunet_disk_lib.h" #include "gnunet_disk_lib.h"
#include "gnunet_getopt_lib.h" #include "gnunet_getopt_lib.h"
#include "gnunet_helper_lib.h"
#include "gnunet_network_lib.h" #include "gnunet_network_lib.h"
#include "gnunet_os_lib.h" #include "gnunet_os_lib.h"
#include "gnunet_peer_lib.h" #include "gnunet_peer_lib.h"
#include "gnunet_plugin_lib.h" #include "gnunet_plugin_lib.h"
#include "gnunet_program_lib.h" #include "gnunet_program_lib.h"
#include "gnunet_protocols.h" #include "gnunet_protocols.h"
#include "gnunet_pseudonym_lib.h" #include "gnunet_pseudonym_lib.h"
#include "gnunet_scheduler_lib.h" #include "gnunet_scheduler_lib.h"
#include "gnunet_server_lib.h" #include "gnunet_server_lib.h"
#include "gnunet_service_lib.h" #include "gnunet_service_lib.h"
 End of changes. 1 change blocks. 
0 lines changed or deleted 1 lines changed or added


 platform.h   platform.h 
skipping to change at line 110 skipping to change at line 110
#endif #endif
#endif #endif
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdint.h> #include <stdint.h>
#include <stdarg.h> #include <stdarg.h>
#include <errno.h> #include <errno.h>
#include <signal.h> #include <signal.h>
#include <libgen.h>
#ifdef WINDOWS #ifdef WINDOWS
#include <malloc.h> /* for alloca(), on other OSes it's in stdl ib.h */ #include <malloc.h> /* for alloca(), on other OSes it's in stdl ib.h */
#endif #endif
#ifndef _MSC_VER #ifndef _MSC_VER
#include <unistd.h> /* KLB_FIX */ #include <unistd.h> /* KLB_FIX */
#endif #endif
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/types.h> #include <sys/types.h>
#ifndef _MSC_VER #ifndef _MSC_VER
#include <dirent.h> /* KLB_FIX */ #include <dirent.h> /* KLB_FIX */
 End of changes. 1 change blocks. 
0 lines changed or deleted 1 lines changed or added


 plibc.h   plibc.h 
skipping to change at line 25 skipping to change at line 25
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Softwa re License along with this library; if not, write to the Free Softwa re
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1 307 USA Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1 307 USA
*/ */
/** /**
* @file include/plibc.h * @file include/plibc.h
* @brief PlibC header * @brief PlibC header
* @attention This file is usually not installed under Unix, * @attention This file is usually not installed under Unix,
* so ship it with your application * so ship it with your application
* @version $Revision: 69 $ * @version $Revision$
*/ */
#ifndef _PLIBC_H_ #ifndef _PLIBC_H_
#define _PLIBC_H_ #define _PLIBC_H_
#ifndef SIGALRM #ifndef SIGALRM
#define SIGALRM 14 #define SIGALRM 14
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C" {
{
#endif #endif
#include <stddef.h> #include <stddef.h>
#ifdef Q_OS_WIN32 #ifdef Q_OS_WIN32
#define WINDOWS 1 #define WINDOWS 1
#endif #endif
#define HAVE_PLIBC_FD 0 #define HAVE_PLIBC_FD 0
#ifdef WINDOWS #ifdef WINDOWS
#if ENABLE_NLS #if ENABLE_NLS
#include "langinfo.h" #include "langinfo.h"
#endif #endif
#include <winsock2.h>
#include <ws2tcpip.h> #include <ws2tcpip.h>
#include <windows.h> #include <windows.h>
#include <sys/types.h> #include <sys/types.h>
#include <time.h> #include <time.h>
#include <stdio.h> #include <stdio.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <dirent.h> #include <dirent.h>
#include <errno.h> #include <errno.h>
#include <stdarg.h> #include <stdarg.h>
#define __BYTE_ORDER BYTE_ORDER #define __BYTE_ORDER BYTE_ORDER
#define __BIG_ENDIAN BIG_ENDIAN #define __BIG_ENDIAN BIG_ENDIAN
/* Conflicts with our definitions */ /* Conflicts with our definitions */
#define __G_WIN32_H__ #define __G_WIN32_H__
/* Convert LARGE_INTEGER to double */ /* Convert LARGE_INTEGER to double */
#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + \ #define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + \
(double)((x).LowPart)) (double)((x).LowPart))
#ifndef __MINGW64__
struct stat64 struct stat64
{ {
_dev_t st_dev; _dev_t st_dev;
_ino_t st_ino; _ino_t st_ino;
_mode_t st_mode; _mode_t st_mode;
short st_nlink; short st_nlink;
short st_uid; short st_uid;
short st_gid; short st_gid;
_dev_t st_rdev; _dev_t st_rdev;
__int64 st_size; __int64 st_size;
__time64_t st_atime; __time64_t st_atime;
__time64_t st_mtime; __time64_t st_mtime;
__time64_t st_ctime; __time64_t st_ctime;
}; };
#endif
typedef unsigned int sa_family_t; typedef unsigned int sa_family_t;
struct sockaddr_un struct sockaddr_un {
{ short sun_family; /*AF_UNIX*/
short sun_family; /*AF_UNIX */ char sun_path[108]; /*path name */
char sun_path[108]; /*path name */ };
};
#ifndef pid_t #ifndef pid_t
#define pid_t DWORD #define pid_t DWORD
#endif #endif
#ifndef error_t #ifndef error_t
#define error_t int #define error_t int
#endif #endif
#ifndef WEXITSTATUS #ifndef WEXITSTATUS
#define WEXITSTATUS(status) (((status) & 0xff00) >> 8) #define WEXITSTATUS(status) (((status) & 0xff00) >> 8)
#endif #endif
#ifndef MSG_DONTWAIT #ifndef MSG_DONTWAIT
#define MSG_DONTWAIT 0 #define MSG_DONTWAIT 0
#endif #endif
enum enum
{ {
_SC_PAGESIZE = 30, _SC_PAGESIZE = 30,
_SC_PAGE_SIZE = 30 _SC_PAGE_SIZE = 30
}; };
/* Thanks to the Cygwin project */ /* Thanks to the Cygwin project */
#define ENOCSI 43 /* No CSI structure available */ #define ENOCSI 43 /* No CSI structure available */
#define EL2HLT 44 /* Level 2 halted */ #define EL2HLT 44 /* Level 2 halted */
#ifndef EDEADLK #ifndef EDEADLK
#define EDEADLK 45 /* Deadlock condition */ #define EDEADLK 45 /* Deadlock condition */
#endif #endif
#ifndef ENOLCK #ifndef ENOLCK
#define ENOLCK 46 /* No record locks available */ #define ENOLCK 46 /* No record locks available */
#endif #endif
#define EBADE 50 /* Invalid exchange */ #define EBADE 50 /* Invalid exchange */
#define EBADR 51 /* Invalid request descriptor */ #define EBADR 51 /* Invalid request descriptor */
#define EXFULL 52 /* Exchange full */ #define EXFULL 52 /* Exchange full */
#define ENOANO 53 /* No anode */ #define ENOANO 53 /* No anode */
#define EBADRQC 54 /* Invalid request code */ #define EBADRQC 54 /* Invalid request code */
#define EBADSLT 55 /* Invalid slot */ #define EBADSLT 55 /* Invalid slot */
#ifndef EDEADLOCK #ifndef EDEADLOCK
#define EDEADLOCK EDEADLK /* File locking deadlock error */ #define EDEADLOCK EDEADLK /* File locking deadlock error */
#endif #endif
#define EBFONT 57 /* Bad font file fmt */ #define EBFONT 57 /* Bad font file fmt */
#define ENOSTR 60 /* Device not a stream */ #define ENOSTR 60 /* Device not a stream */
#define ENODATA 61 /* No data (for no delay io) */ #define ENODATA 61 /* No data (for no delay io) */
#define ETIME 62 /* Timer expired */ #define ETIME 62 /* Timer expired */
#define ENOSR 63 /* Out of streams resources */ #define ENOSR 63 /* Out of streams resources */
#define ENONET 64 /* Machine is not on the network */ #define ENONET 64 /* Machine is not on the network */
#define ENOPKG 65 /* Package not installed */ #define ENOPKG 65 /* Package not installed */
#define EREMOTE 66 /* The object is remote */ #define EREMOTE 66 /* The object is remote */
#define ENOLINK 67 /* The link has been severed */ #define ENOLINK 67 /* The link has been severed */
#define EADV 68 /* Advertise error */ #define EADV 68 /* Advertise error */
#define ESRMNT 69 /* Srmount error */ #define ESRMNT 69 /* Srmount error */
#define ECOMM 70 /* Communication error on send */ #define ECOMM 70 /* Communication error on send */
#define EPROTO 71 /* Protocol error */ #define EPROTO 71 /* Protocol error */
#define EMULTIHOP 74 /* Multihop attempted */ #define EMULTIHOP 74 /* Multihop attempted */
#define ELBIN 75 /* Inode is remote (not really error) */ #define ELBIN 75 /* Inode is remote (not really error) */
#define EDOTDOT 76 /* Cross mount point (not really error) */ #define EDOTDOT 76 /* Cross mount point (not really error) */
#define EBADMSG 77 /* Trying to read unreadable message */ #define EBADMSG 77 /* Trying to read unreadable message */
#define ENOTUNIQ 80 /* Given log. name not unique */ #define ENOTUNIQ 80 /* Given log. name not unique */
#define EBADFD 81 /* f.d. invalid for this operation */ #define EBADFD 81 /* f.d. invalid for this operation */
#define EREMCHG 82 /* Remote address changed */ #define EREMCHG 82 /* Remote address changed */
#define ELIBACC 83 /* Can't access a needed shared lib */ #define ELIBACC 83 /* Can't access a needed shared lib */
#define ELIBBAD 84 /* Accessing a corrupted shared lib */ #define ELIBBAD 84 /* Accessing a corrupted shared lib */
#define ELIBSCN 85 /* .lib section in a.out corrupted */ #define ELIBSCN 85 /* .lib section in a.out corrupted */
#define ELIBMAX 86 /* Attempting to link in too many libs */ #define ELIBMAX 86 /* Attempting to link in too many libs */
#define ELIBEXEC 87 /* Attempting to exec a shared library */ #define ELIBEXEC 87 /* Attempting to exec a shared library */
#ifndef ENOSYS #ifndef ENOSYS
#define ENOSYS 88 /* Function not implemented */ #define ENOSYS 88 /* Function not implemented */
#endif #endif
#define ENMFILE 89 /* No more files */ #define ENMFILE 89 /* No more files */
#ifndef ENOTEMPTY #ifndef ENOTEMPTY
#define ENOTEMPTY 90 /* Directory not empty */ #define ENOTEMPTY 90 /* Directory not empty */
#endif #endif
#ifndef ENAMETOOLONG #ifndef ENAMETOOLONG
#define ENAMETOOLONG 91 /* File or path name too long */ #define ENAMETOOLONG 91 /* File or path name too long */
#endif #endif
#define ELOOP 92 /* Too many symbolic links */ #define ELOOP 92 /* Too many symbolic links */
#define EOPNOTSUPP 95 /* Operation not supported on transport end #define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
point */ #define EPFNOSUPPORT 96 /* Protocol family not supported */
#define EPFNOSUPPORT 96 /* Protocol family not supported */ #define ECONNRESET 104 /* Connection reset by peer */
#define ECONNRESET 104 /* Connection reset by peer */ #define ENOBUFS 105 /* No buffer space available */
#define ENOBUFS 105 /* No buffer space available */ #define EAFNOSUPPORT 106 /* Address family not supported by protocol family
#define EAFNOSUPPORT 106 /* Address family not supported by protocol */
family */ #define EPROTOTYPE 107 /* Protocol wrong type for socket */
#define EPROTOTYPE 107 /* Protocol wrong type for socket */ #define ENOTSOCK 108 /* Socket operation on non-socket */
#define ENOTSOCK 108 /* Socket operation on non-socket */ #define ENOPROTOOPT 109 /* Protocol not available */
#define ENOPROTOOPT 109 /* Protocol not available */ #define ESHUTDOWN 110 /* Can't send after socket shutdown */
#define ESHUTDOWN 110 /* Can't send after socket shutdown */ #define ECONNREFUSED 111 /* Connection refused */
#define ECONNREFUSED 111 /* Connection refused */ #define EADDRINUSE 112 /* Address already in use */
#define EADDRINUSE 112 /* Address already in use */ #define ECONNABORTED 113 /* Connection aborted */
#define ECONNABORTED 113 /* Connection aborted */ #define ENETUNREACH 114 /* Network is unreachable */
#define ENETUNREACH 114 /* Network is unreachable */ #define ENETDOWN 115 /* Network interface is not configured */
#define ENETDOWN 115 /* Network interface is not configured */
#ifndef ETIMEDOUT #ifndef ETIMEDOUT
#define ETIMEDOUT 116 /* Connection timed out */ #define ETIMEDOUT 116 /* Connection timed out */
#endif #endif
#define EHOSTDOWN 117 /* Host is down */ #define EHOSTDOWN 117 /* Host is down */
#define EHOSTUNREACH 118 /* Host is unreachable */ #define EHOSTUNREACH 118 /* Host is unreachable */
#define EINPROGRESS 119 /* Connection already in progress */ #define EINPROGRESS 119 /* Connection already in progress */
#define EALREADY 120 /* Socket already connected */ #define EALREADY 120 /* Socket already connected */
#define EDESTADDRREQ 121 /* Destination address required */ #define EDESTADDRREQ 121 /* Destination address required */
#define EMSGSIZE 122 /* Message too long */ #define EMSGSIZE 122 /* Message too long */
#define EPROTONOSUPPORT 123 /* Unknown protocol */ #define EPROTONOSUPPORT 123 /* Unknown protocol */
#define ESOCKTNOSUPPORT 124 /* Socket type not supported */ #define ESOCKTNOSUPPORT 124 /* Socket type not supported */
#define EADDRNOTAVAIL 125 /* Address not available */ #define EADDRNOTAVAIL 125 /* Address not available */
#define ENETRESET 126 /* Connection aborted by network */ #define ENETRESET 126 /* Connection aborted by network */
#define EISCONN 127 /* Socket is already connected */ #define EISCONN 127 /* Socket is already connected */
#define ENOTCONN 128 /* Socket is not connected */ #define ENOTCONN 128 /* Socket is not connected */
#define ETOOMANYREFS 129 /* Too many references: cannot splice */ #define ETOOMANYREFS 129 /* Too many references: cannot splice */
#define EPROCLIM 130 /* Too many processes */ #define EPROCLIM 130 /* Too many processes */
#define EUSERS 131 /* Too many users */ #define EUSERS 131 /* Too many users */
#define EDQUOT 132 /* Disk quota exceeded */ #define EDQUOT 132 /* Disk quota exceeded */
#define ESTALE 133 /* Unknown error */ #define ESTALE 133 /* Unknown error */
#ifndef ENOTSUP #ifndef ENOTSUP
#define ENOTSUP 134 /* Not supported */ #define ENOTSUP 134 /* Not supported */
#endif #endif
#define ENOMEDIUM 135 /* No medium (in tape drive) */ #define ENOMEDIUM 135 /* No medium (in tape drive) */
#define ENOSHARE 136 /* No such host or network path */ #define ENOSHARE 136 /* No such host or network path */
#define ECASECLASH 137 /* Filename exists with different case */ #define ECASECLASH 137 /* Filename exists with different case */
#define EWOULDBLOCK EAGAIN /* Operation would block */ #define EWOULDBLOCK EAGAIN /* Operation would block */
#define EOVERFLOW 139 /* Value too large for defined data type */ #define EOVERFLOW 139 /* Value too large for defined data type */
#undef HOST_NOT_FOUND #undef HOST_NOT_FOUND
#define HOST_NOT_FOUND 1 #define HOST_NOT_FOUND 1
#undef TRY_AGAIN #undef TRY_AGAIN
#define TRY_AGAIN 2 #define TRY_AGAIN 2
#undef NO_RECOVERY #undef NO_RECOVERY
#define NO_RECOVERY 3 #define NO_RECOVERY 3
#undef NO_ADDRESS #undef NO_ADDRESS
#define NO_ADDRESS 4 #define NO_ADDRESS 4
#define PROT_READ 0x1 #define PROT_READ 0x1
#define PROT_WRITE 0x2 #define PROT_WRITE 0x2
#define MAP_SHARED 0x1 #define MAP_SHARED 0x1
#define MAP_PRIVATE 0x2 /* unsupported */ #define MAP_PRIVATE 0x2 /* unsupported */
#define MAP_FIXED 0x10 #define MAP_FIXED 0x10
#define MAP_ANONYMOUS 0x20 /* unsupported */
#define MAP_FAILED ((void *)-1) #define MAP_FAILED ((void *)-1)
struct statfs #define MS_ASYNC 1 /* sync memory asynchronously */
{ #define MS_INVALIDATE 2 /* invalidate the caches */
long f_type; /* type of filesystem (see below) */ #define MS_SYNC 4 /* synchronous memory sync */
long f_bsize; /* optimal transfer block size */
long f_blocks; /* total data blocks in file system */ struct statfs
long f_bfree; /* free blocks in fs */ {
long f_bavail; /* free blocks avail to non-superuser */ long f_type; /* type of filesystem (see below) */
long f_files; /* total file nodes in file system */ long f_bsize; /* optimal transfer block size */
long f_ffree; /* free file nodes in fs */ long f_blocks; /* total data blocks in file system */
long f_fsid; /* file system id */ long f_bfree; /* free blocks in fs */
long f_namelen; /* maximum length of filenames */ long f_bavail; /* free blocks avail to non-superuser */
long f_spare[6]; /* spare for later */ long f_files; /* total file nodes in file system */
}; long f_ffree; /* free file nodes in fs */
long f_fsid; /* file system id */
long f_namelen; /* maximum length of filenames */
long f_spare[6]; /* spare for later */
};
extern const struct in6_addr in6addr_any; /* :: */ extern const struct in6_addr in6addr_any; /* :: */
extern const struct in6_addr in6addr_loopback; /* ::1 */ extern const struct in6_addr in6addr_loopback; /* ::1 */
/* Taken from the Wine project <http://www.winehq.org> /* Taken from the Wine project <http://www.winehq.org>
/wine/include/winternl.h */ /wine/include/winternl.h */
enum SYSTEM_INFORMATION_CLASS enum SYSTEM_INFORMATION_CLASS
{ {
SystemBasicInformation = 0, SystemBasicInformation = 0,
Unknown1, Unknown1,
SystemPerformanceInformation = 2, SystemPerformanceInformation = 2,
SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */ SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
Unknown4, Unknown4,
SystemProcessInformation = 5, SystemProcessInformation = 5,
Unknown6, Unknown6,
Unknown7, Unknown7,
SystemProcessorPerformanceInformation = 8, SystemProcessorPerformanceInformation = 8,
Unknown9, Unknown9,
Unknown10, Unknown10,
SystemDriverInformation, SystemDriverInformation,
Unknown12, Unknown12,
Unknown13, Unknown13,
Unknown14, Unknown14,
Unknown15, Unknown15,
SystemHandleList, SystemHandleList,
Unknown17, Unknown17,
Unknown18, Unknown18,
Unknown19, Unknown19,
Unknown20, Unknown20,
SystemCacheInformation, SystemCacheInformation,
Unknown22, Unknown22,
SystemInterruptInformation = 23, SystemInterruptInformation = 23,
SystemExceptionInformation = 33, SystemExceptionInformation = 33,
SystemRegistryQuotaInformation = 37, SystemRegistryQuotaInformation = 37,
SystemLookasideInformation = 45 SystemLookasideInformation = 45
}; };
typedef struct typedef struct
{ {
LARGE_INTEGER IdleTime; LARGE_INTEGER IdleTime;
LARGE_INTEGER KernelTime; LARGE_INTEGER KernelTime;
LARGE_INTEGER UserTime; LARGE_INTEGER UserTime;
LARGE_INTEGER Reserved1[2]; LARGE_INTEGER Reserved1[2];
ULONG Reserved2; ULONG Reserved2;
} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION; } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
#define sleep(secs) (Sleep(secs * 1000)) #define sleep(secs) (Sleep(secs * 1000))
/*********************** statfs *****************************/ /*********************** statfs *****************************/
/* fake block size */ /* fake block size */
#define FAKED_BLOCK_SIZE 512 #define FAKED_BLOCK_SIZE 512
/* linux-compatible values for fs type */ /* linux-compatible values for fs type */
#define MSDOS_SUPER_MAGIC 0x4d44 #define MSDOS_SUPER_MAGIC 0x4d44
#define NTFS_SUPER_MAGIC 0x5346544E #define NTFS_SUPER_MAGIC 0x5346544E
/*********************** End of statfs ***********************/ /*********************** End of statfs ***********************/
#define SHUT_RDWR SD_BOTH #define SHUT_RDWR SD_BOTH
/* Operations for flock() */ /* Operations for flock() */
#define LOCK_SH 1 /* shared lock */ #define LOCK_SH 1 /* shared lock */
#define LOCK_EX 2 /* exclusive lock */ #define LOCK_EX 2 /* exclusive lock */
#define LOCK_NB 4 /* or'd with one of the above to prevent #define LOCK_NB 4 /* or'd with one of the above to prevent
* blocking */ blocking */
#define LOCK_UN 8 /* remove lock */ #define LOCK_UN 8 /* remove lock */
/* Not supported under MinGW */ /* Not supported under MinGW */
#define S_IRGRP 0 #define S_IRGRP 0
#define S_IWGRP 0 #define S_IWGRP 0
#define S_IROTH 0 #define S_IROTH 0
#define S_IXGRP 0 #define S_IXGRP 0
#define S_IWOTH 0 #define S_IWOTH 0
#define S_IXOTH 0 #define S_IXOTH 0
#define S_ISUID 0 #define S_ISUID 0
#define S_ISGID 0 #define S_ISGID 0
skipping to change at line 336 skipping to change at line 338
#define SHUT_WR SD_SEND #define SHUT_WR SD_SEND
#define SHUT_RD SD_RECEIVE #define SHUT_RD SD_RECEIVE
#define SHUT_RDWR SD_BOTH #define SHUT_RDWR SD_BOTH
#define SIGKILL 9 #define SIGKILL 9
#define SIGTERM 15 #define SIGTERM 15
#define SetErrnoFromWinError(e) _SetErrnoFromWinError(e, __FILE__, __LINE__ ) #define SetErrnoFromWinError(e) _SetErrnoFromWinError(e, __FILE__, __LINE__ )
BOOL _plibc_CreateShortcut (const char *pszSrc, const char *pszDest); BOOL _plibc_CreateShortcut(const char *pszSrc, const char *pszDest);
BOOL _plibc_DereferenceShortcut (char *pszShortcut); BOOL _plibc_DereferenceShortcut(char *pszShortcut);
char *plibc_ChooseDir (char *pszTitle, unsigned long ulFlags); char *plibc_ChooseDir(char *pszTitle, unsigned long ulFlags);
char *plibc_ChooseFile (char *pszTitle, unsigned long ulFlags); char *plibc_ChooseFile(char *pszTitle, unsigned long ulFlags);
long QueryRegistry (HKEY hMainKey, const char *pszKey, const char *pszSub
Key, long QueryRegistry(HKEY hMainKey, const char *pszKey, const char *pszSubKey
char *pszBuffer, long *pdLength); ,
char *pszBuffer, long *pdLength);
BOOL __win_IsHandleMarkedAsBlocking (int hHandle); long QueryRegistryW(HKEY hMainKey, const wchar_t *pszKey, const wchar_t *ps
void __win_SetHandleBlockingMode (int s, BOOL bBlocking); zSubKey,
void __win_DiscardHandleBlockingMode (int s); wchar_t *pszBuffer, long *pdLength);
int _win_isSocketValid (int s);
int plibc_conv_to_win_path (const char *pszUnix, char *pszWindows); BOOL __win_IsHandleMarkedAsBlocking(int hHandle);
unsigned plibc_get_handle_count (); void __win_SetHandleBlockingMode(int s, BOOL bBlocking);
void __win_DiscardHandleBlockingMode(int s);
typedef void (*TPanicProc) (int, char *); int _win_isSocketValid(int s);
void plibc_set_panic_proc (TPanicProc proc); int plibc_conv_to_win_path(const char *pszUnix, char *pszWindows);
int plibc_conv_to_win_pathw(const wchar_t *pszUnix, wchar_t *pwszWindows);
int flock (int fd, int operation);
int fsync (int fildes); int plibc_conv_to_win_pathwconv(const char *pszUnix, wchar_t *pwszWindows);
int inet_pton (int af, const char *src, void *dst); int plibc_conv_to_win_pathwconv_ex(const char *pszUnix, wchar_t *pszWindows
int inet_pton4 (const char *src, u_char * dst, int pton); , int derefLinks);
unsigned plibc_get_handle_count();
typedef void (*TPanicProc) (int, char *);
void plibc_set_panic_proc(TPanicProc proc);
int flock(int fd, int operation);
int fsync(int fildes);
int inet_pton(int af, const char *src, void *dst);
int inet_pton4(const char *src, u_char *dst, int pton);
#if USE_IPV6 #if USE_IPV6
int inet_pton6 (const char *src, u_char * dst); int inet_pton6(const char *src, u_char *dst);
#endif #endif
int truncate (const char *fname, int distance); int truncate(const char *fname, int distance);
int statfs (const char *path, struct statfs *buf); int statfs(const char *path, struct statfs *buf);
const char *hstrerror (int err); const char *hstrerror(int err);
int mkstemp (char *tmplate); int mkstemp(char *tmplate);
char *strptime (const char *buf, const char *format, struct tm *tm); char *strptime (const char *buf, const char *format, struct tm *tm);
const char *inet_ntop (int af, const void *src, char *dst, size_t size); const char *inet_ntop(int af, const void *src, char *dst, size_t size);
struct tm *gmtime_r(const time_t *clock, struct tm *result);
int plibc_init (char *pszOrg, char *pszApp);
void plibc_shutdown (); int plibc_init(char *pszOrg, char *pszApp);
int plibc_initialized (); void plibc_shutdown();
int plibc_conv_to_win_path_ex (const char *pszUnix, char *pszWindows, int plibc_initialized();
int derefLinks);
void _SetErrnoFromWinError (long lWinError, char *pszCaller, int iLine); void _SetErrnoFromWinError(long lWinError, char *pszCaller, int iLine);
void SetErrnoFromWinsockError (long lWinError); void SetErrnoFromWinsockError(long lWinError);
void SetHErrnoFromWinError (long lWinError); void SetHErrnoFromWinError(long lWinError);
void SetErrnoFromHRESULT (HRESULT hRes); void SetErrnoFromHRESULT(HRESULT hRes);
int GetErrnoFromWinsockError (long lWinError); int GetErrnoFromWinsockError(long lWinError);
FILE *_win_fopen (const char *filename, const char *mode); FILE *_win_fopen(const char *filename, const char *mode);
DIR *_win_opendir (const char *dirname); int _win_fclose(FILE *);
int _win_open (const char *filename, int oflag, ...); DIR *_win_opendir(const char *dirname);
struct dirent *_win_readdir(DIR *dirp);
int _win_closedir(DIR *dirp);
int _win_open(const char *filename, int oflag, ...);
#ifdef ENABLE_NLS #ifdef ENABLE_NLS
char *_win_bindtextdomain (const char *domainname, const char *dirname); char *_win_bindtextdomain(const char *domainname, const char *dirname);
#endif #endif
int _win_chdir (const char *path); int _win_chdir(const char *path);
int _win_close (int fd); int _win_close(int fd);
int _win_creat (const char *path, mode_t mode); int _win_creat(const char *path, mode_t mode);
char *_win_ctime (const time_t * clock); char *_win_ctime(const time_t *clock);
char *_win_ctime_r (const time_t * clock, char *buf); char *_win_ctime_r(const time_t *clock, char *buf);
int _win_fstat (int handle, struct stat *buffer); int _win_fstat(int handle, struct stat *buffer);
int _win_ftruncate (int fildes, off_t length); int _win_ftruncate(int fildes, off_t length);
void _win_gettimeofday (struct timeval *tp, void *tzp); void _win_gettimeofday(struct timeval *tp, void *tzp);
int _win_kill (pid_t pid, int sig); int _win_kill(pid_t pid, int sig);
int _win_pipe (int *phandles); int _win_pipe(int *phandles);
int _win_rmdir (const char *path); int _win_rmdir(const char *path);
int _win_access (const char *path, int mode); int _win_access( const char *path, int mode );
int _win_chmod (const char *filename, int pmode); int _win_chmod(const char *filename, int pmode);
char *realpath (const char *file_name, char *resolved_name); char *realpath(const char *file_name, char *resolved_name);
long _win_random (void); long _win_random(void);
void _win_srandom (unsigned int seed); void _win_srandom(unsigned int seed);
int _win_remove (const char *path); int _win_remove(const char *path);
int _win_rename (const char *oldname, const char *newname); int _win_rename(const char *oldname, const char *newname);
int _win_stat (const char *path, struct stat *buffer); int _win_stat(const char *path, struct stat *buffer);
int _win_stat64 (const char *path, struct stat64 *buffer); int _win_stat64(const char *path, struct stat64 *buffer);
long _win_sysconf (int name); long _win_sysconf(int name);
int _win_unlink (const char *filename); int _win_unlink(const char *filename);
int _win_write (int fildes, const void *buf, size_t nbyte); int _win_write(int fildes, const void *buf, size_t nbyte);
int _win_read (int fildes, void *buf, size_t nbyte); int _win_read(int fildes, void *buf, size_t nbyte);
size_t _win_fwrite (const void *buffer, size_t size, size_t count, size_t _win_fwrite(const void *buffer, size_t size, size_t count, FILE *str
FILE * stream); eam);
size_t _win_fread (void *buffer, size_t size, size_t count, FILE * stream size_t _win_fread( void *buffer, size_t size, size_t count, FILE *stream );
); int _win_symlink(const char *path1, const char *path2);
int _win_symlink (const char *path1, const char *path2); void *_win_mmap(void *start, size_t len, int access, int flags, int fd,
void *_win_mmap (void *start, size_t len, int access, int flags, int fd, unsigned long long offset);
unsigned long long offset); int _win_msync(void *start, size_t length, int flags);
int _win_munmap (void *start, size_t length); int _win_munmap(void *start, size_t length);
int _win_lstat (const char *path, struct stat *buf); int _win_lstat(const char *path, struct stat *buf);
int _win_lstat64 (const char *path, struct stat64 *buf); int _win_lstat64(const char *path, struct stat64 *buf);
int _win_readlink (const char *path, char *buf, size_t bufsize); int _win_readlink(const char *path, char *buf, size_t bufsize);
int _win_accept (int s, struct sockaddr *addr, int *addrlen); int _win_accept(int s, struct sockaddr *addr, int *addrlen);
int _win_printf (const char *format, ...);
int _win_fprintf (FILE * f, const char *format, ...); int _win_printf(const char *format,...);
int _win_vprintf (const char *format, va_list ap); int _win_wprintf(const wchar_t *format, ...);
int _win_vfprintf (FILE * stream, const char *format, va_list arg_ptr);
int _win_vsprintf (char *dest, const char *format, va_list arg_ptr); int _win_fprintf(FILE *f,const char *format,...);
int _win_vsnprintf (char *str, size_t size, const char *format, int _win_fwprintf(FILE *f,const wchar_t *format, ...);
va_list arg_ptr);
int _win_snprintf (char *str, size_t size, const char *format, ...); int _win_vprintf(const char *format, va_list ap);
int _win_sprintf (char *dest, const char *format, ...); int _win_vfwprintf(FILE *stream, const wchar_t *format, va_list arg_ptr);
int _win_vsscanf (const char *str, const char *format, va_list arg_ptr);
int _win_sscanf (const char *str, const char *format, ...); int _win_vfprintf(FILE *stream, const char *format, va_list arg_ptr);
int _win_vfscanf (FILE * stream, const char *format, va_list arg_ptr); int _win_vwprintf(const wchar_t *format, va_list ap);
int _win_vscanf (const char *format, va_list arg_ptr);
int _win_scanf (const char *format, ...); int _win_vsprintf(char *dest,const char *format, va_list arg_ptr);
int _win_fscanf (FILE * stream, const char *format, ...); int _win_vswprintf(wchar_t *dest, const wchar_t *format, va_list arg_ptr);
pid_t _win_waitpid (pid_t pid, int *stat_loc, int options);
int _win_bind (int s, const struct sockaddr *name, int namelen); int _win_vsnprintf(char* str, size_t size, const char *format, va_list arg_
int _win_connect (int s, const struct sockaddr *name, int namelen); ptr);
int _win_getpeername (int s, struct sockaddr *name, int *namelen); int _win_vsnwprintf(wchar_t* wstr, size_t size, const wchar_t *format, va_l
int _win_getsockname (int s, struct sockaddr *name, int *namelen); ist arg_ptr);
int _win_getsockopt (int s, int level, int optname, char *optval,
int *optlen); int _win_snprintf(char *str,size_t size,const char *format,...);
int _win_listen (int s, int backlog); int _win_snwprintf(wchar_t *str, size_t size, const wchar_t *format, ...);
int _win_recv (int s, char *buf, int len, int flags);
int _win_recvfrom (int s, void *buf, int len, int flags, int _win_sprintf(char *dest,const char *format,...);
struct sockaddr *from, int *fromlen); int _win_swprintf(wchar_t *dest, const wchar_t *format, ...);
int _win_select (int max_fd, fd_set * rfds, fd_set * wfds, fd_set * efds,
const struct timeval *tv); int _win_vsscanf(const char* str, const char* format, va_list arg_ptr);
int _win_send (int s, const char *buf, int len, int flags); int _win_vswscanf(const wchar_t* wstr, const wchar_t* format, va_list arg_p
int _win_sendto (int s, const char *buf, int len, int flags, tr);
const struct sockaddr *to, int tolen);
int _win_setsockopt (int s, int level, int optname, const void *optval, int _win_sscanf(const char *str, const char *format, ...);
int optlen); int _win_swscanf(const wchar_t *wstr, const wchar_t *format, ...);
int _win_shutdown (int s, int how);
int _win_socket (int af, int type, int protocol); int _win_vfscanf(FILE *stream, const char *format, va_list arg_ptr);
struct hostent *_win_gethostbyaddr (const char *addr, int len, int type); int _win_vfwscanf(FILE *stream, const wchar_t *format, va_list arg_ptr);
struct hostent *_win_gethostbyname (const char *name);
struct hostent *gethostbyname2 (const char *name, int af); int _win_vscanf(const char *format, va_list arg_ptr);
char *_win_strerror (int errnum); int _win_vwscanf(const wchar_t *format, va_list arg_ptr);
int IsWinNT ();
char *index (const char *s, int c); int _win_scanf(const char *format, ...);
int _win_wscanf(const wchar_t *format, ...);
int _win_fscanf(FILE *stream, const char *format, ...);
int _win_fwscanf(FILE *stream, const wchar_t *format, ...);
pid_t _win_waitpid(pid_t pid, int *stat_loc, int options);
int _win_bind(int s, const struct sockaddr *name, int namelen);
int _win_connect(int s,const struct sockaddr *name, int namelen);
int _win_getpeername(int s, struct sockaddr *name,
int *namelen);
int _win_getsockname(int s, struct sockaddr *name,
int *namelen);
int _win_getsockopt(int s, int level, int optname, char *optval,
int *optlen);
int _win_listen(int s, int backlog);
int _win_recv(int s, char *buf, int len, int flags);
int _win_recvfrom(int s, void *buf, int len, int flags,
struct sockaddr *from, int *fromlen);
int _win_select(int max_fd, fd_set * rfds, fd_set * wfds, fd_set * efds,
const struct timeval *tv);
int _win_send(int s, const char *buf, int len, int flags);
int _win_sendto(int s, const char *buf, int len, int flags,
const struct sockaddr *to, int tolen);
int _win_setsockopt(int s, int level, int optname, const void *optval,
int optlen);
int _win_shutdown(int s, int how);
int _win_socket(int af, int type, int protocol);
struct hostent *_win_gethostbyaddr(const char *addr, int len, int type);
struct hostent *_win_gethostbyname(const char *name);
struct hostent *gethostbyname2(const char *name, int af);
char *_win_strerror(int errnum);
int IsWinNT();
char *index(const char *s, int c);
#if !HAVE_STRNDUP #if !HAVE_STRNDUP
char *strndup (const char *s, size_t n); char *strndup (const char *s, size_t n);
#endif #endif
#if !HAVE_STRNLEN #if !HAVE_STRNLEN
size_t strnlen (const char *str, size_t maxlen); size_t strnlen (const char *str, size_t maxlen);
#endif #endif
char *stpcpy (char *dest, const char *src); char *stpcpy(char *dest, const char *src);
char *strcasestr (const char *haystack_start, const char *needle_start); char *strcasestr(const char *haystack_start, const char *needle_start);
#ifndef __MINGW64__
#define strcasecmp(a, b) stricmp(a, b) #define strcasecmp(a, b) stricmp(a, b)
#define wcscasecmp(a, b) wcsicmp(a, b)
#define strncasecmp(a, b, c) strnicmp(a, b, c) #define strncasecmp(a, b, c) strnicmp(a, b, c)
#define wcsncasecmp(a, b, c) wcsnicmp(a, b, c)
#endif /* WINDOWS */ #endif
#endif /* WINDOWS */
#ifndef WINDOWS #ifndef WINDOWS
#define DIR_SEPARATOR '/' #define DIR_SEPARATOR '/'
#define DIR_SEPARATOR_STR "/" #define DIR_SEPARATOR_STR "/"
#define PATH_SEPARATOR ':' #define PATH_SEPARATOR ':'
#define PATH_SEPARATOR_STR ":" #define PATH_SEPARATOR_STR ":"
#define NEWLINE "\n" #define NEWLINE "\n"
#ifdef ENABLE_NLS #ifdef ENABLE_NLS
#define BINDTEXTDOMAIN(d, n) bindtextdomain(d, n) #define BINDTEXTDOMAIN(d, n) bindtextdomain(d, n)
#endif #endif
#define CREAT(p, m) creat(p, m) #define CREAT(p, m) creat(p, m)
#define PLIBC_CTIME(c) ctime(c) #define PLIBC_CTIME(c) ctime(c)
#define CTIME_R(c, b) ctime_r(c, b) #define CTIME_R(c, b) ctime_r(c, b)
#undef FOPEN #undef FOPEN
#define FOPEN(f, m) fopen(f, m) #define FOPEN(f, m) fopen(f, m)
#define FTRUNCATE(f, l) ftruncate(f, l) #define FCLOSE(f) fclose(f)
#define OPENDIR(d) opendir(d) #define FTRUNCATE(f, l) ftruncate(f, l)
#define OPEN open #define OPENDIR(d) opendir(d)
#define CHDIR(d) chdir(d) #define CLOSEDIR(d) closedir(d)
#define CLOSE(f) close(f) #define READDIR(d) readdir(d)
#define LSEEK(f, o, w) lseek(f, o, w) #define OPEN open
#define RMDIR(f) rmdir(f) #define CHDIR(d) chdir(d)
#define ACCESS(p, m) access(p, m) #define CLOSE(f) close(f)
#define CHMOD(f, p) chmod(f, p) #define LSEEK(f, o, w) lseek(f, o, w)
#define FSTAT(h, b) fstat(h, b) #define RMDIR(f) rmdir(f)
#define PLIBC_KILL(p, s) kill(p, s) #define ACCESS(p, m) access(p, m)
#define PIPE(h) pipe(h) #define CHMOD(f, p) chmod(f, p)
#define REMOVE(p) remove(p) #define FSTAT(h, b) fstat(h, b)
#define RENAME(o, n) rename(o, n) #define PLIBC_KILL(p, s) kill(p, s)
#define STAT(p, b) stat(p, b) #define PIPE(h) pipe(h)
#define STAT64(p, b) stat64(p, b) #define REMOVE(p) remove(p)
#define SYSCONF(n) sysconf(n) #define RENAME(o, n) rename(o, n)
#define UNLINK(f) unlink(f) #define STAT(p, b) stat(p, b)
#define WRITE(f, b, n) write(f, b, n) #define STAT64(p, b) stat64(p, b)
#define READ(f, b, n) read(f, b, n) #define SYSCONF(n) sysconf(n)
#define GN_FREAD(b, s, c, f) fread(b, s, c, f) #define UNLINK(f) unlink(f)
#define GN_FWRITE(b, s, c, f) fwrite(b, s, c, f) #define WRITE(f, b, n) write(f, b, n)
#define SYMLINK(a, b) symlink(a, b) #define READ(f, b, n) read(f, b, n)
#define MMAP(s, l, p, f, d, o) mmap(s, l, p, f, d, o) #define GN_FREAD(b, s, c, f) fread(b, s, c, f)
#define MUNMAP(s, l) munmap(s, l) #define GN_FWRITE(b, s, c, f) fwrite(b, s, c, f)
#define STRERROR(i) strerror(i) #define SYMLINK(a, b) symlink(a, b)
#define RANDOM() random() #define MMAP(s, l, p, f, d, o) mmap(s, l, p, f, d, o)
#define SRANDOM(s) srandom(s) #define MKFIFO(p, m) mkfifo(p, m)
#define READLINK(p, b, s) readlink(p, b, s) #define MSYNC(s, l, f) msync(s, l, f)
#define LSTAT(p, b) lstat(p, b) #define MUNMAP(s, l) munmap(s, l)
#define LSTAT64(p, b) lstat64(p, b) #define STRERROR(i) strerror(i)
#define PRINTF printf #define RANDOM() random()
#define FPRINTF fprintf #define SRANDOM(s) srandom(s)
#define VPRINTF(f, a) vprintf(f, a) #define READLINK(p, b, s) readlink(p, b, s)
#define VFPRINTF(s, f, a) vfprintf(s, f, a) #define LSTAT(p, b) lstat(p, b)
#define VSPRINTF(d, f, a) vsprintf(d, f, a) #define LSTAT64(p, b) lstat64(p, b)
#define VSNPRINTF(str, size, fmt, a) vsnprintf(str, size, fmt, a) #define PRINTF printf
#define _REAL_SNPRINTF snprintf #define FPRINTF fprintf
#define SPRINTF sprintf #define VPRINTF(f, a) vprintf(f, a)
#define VSSCANF(s, f, a) vsscanf(s, f, a) #define VFPRINTF(s, f, a) vfprintf(s, f, a)
#define SSCANF sscanf #define VSPRINTF(d, f, a) vsprintf(d, f, a)
#define VFSCANF(s, f, a) vfscanf(s, f, a) #define VSNPRINTF(str, size, fmt, a) vsnprintf(str, size, fmt, a)
#define VSCANF(f, a) vscanf(f, a) #define _REAL_SNPRINTF snprintf
#define SCANF scanf #define SPRINTF sprintf
#define FSCANF fscanf #define VSSCANF(s, f, a) vsscanf(s, f, a)
#define WAITPID(p, s, o) waitpid(p, s, o) #define SSCANF sscanf
#define ACCEPT(s, a, l) accept(s, a, l) #define VFSCANF(s, f, a) vfscanf(s, f, a)
#define BIND(s, n, l) bind(s, n, l) #define VSCANF(f, a) vscanf(f, a)
#define CONNECT(s, n, l) connect(s, n, l) #define SCANF scanf
#define GETPEERNAME(s, n, l) getpeername(s, n, l) #define FSCANF fscanf
#define GETSOCKNAME(s, n, l) getsockname(s, n, l) #define WAITPID(p, s, o) waitpid(p, s, o)
#define GETSOCKOPT(s, l, o, v, p) getsockopt(s, l, o, v, p) #define ACCEPT(s, a, l) accept(s, a, l)
#define LISTEN(s, b) listen(s, b) #define BIND(s, n, l) bind(s, n, l)
#define RECV(s, b, l, f) recv(s, b, l, f) #define CONNECT(s, n, l) connect(s, n, l)
#define RECVFROM(s, b, l, f, r, o) recvfrom(s, b, l, f, r, o) #define GETPEERNAME(s, n, l) getpeername(s, n, l)
#define SELECT(n, r, w, e, t) select(n, r, w, e, t) #define GETSOCKNAME(s, n, l) getsockname(s, n, l)
#define SEND(s, b, l, f) send(s, b, l, f) #define GETSOCKOPT(s, l, o, v, p) getsockopt(s, l, o, v, p)
#define SENDTO(s, b, l, f, o, n) sendto(s, b, l, f, o, n) #define LISTEN(s, b) listen(s, b)
#define SETSOCKOPT(s, l, o, v, n) setsockopt(s, l, o, v, n) #define RECV(s, b, l, f) recv(s, b, l, f)
#define SHUTDOWN(s, h) shutdown(s, h) #define RECVFROM(s, b, l, f, r, o) recvfrom(s, b, l, f, r, o)
#define SOCKET(a, t, p) socket(a, t, p) #define SELECT(n, r, w, e, t) select(n, r, w, e, t)
#define GETHOSTBYADDR(a, l, t) gethostbyname(a, l, t) #define SEND(s, b, l, f) send(s, b, l, f)
#define GETHOSTBYNAME(n) gethostbyname(n) #define SENDTO(s, b, l, f, o, n) sendto(s, b, l, f, o, n)
#define GETTIMEOFDAY(t, n) gettimeofday(t, n) #define SETSOCKOPT(s, l, o, v, n) setsockopt(s, l, o, v, n)
#define INSQUE(e, p) insque(e, p) #define SHUTDOWN(s, h) shutdown(s, h)
#define REMQUE(e) remque(e) #define SOCKET(a, t, p) socket(a, t, p)
#define HSEARCH(i, a) hsearch(i, a) #define GETHOSTBYADDR(a, l, t) gethostbyname(a, l, t)
#define HCREATE(n) hcreate(n) #define GETHOSTBYNAME(n) gethostbyname(n)
#define HDESTROY() hdestroy() #define GETTIMEOFDAY(t, n) gettimeofday(t, n)
#define HSEARCH_R(i, a, r, h) hsearch_r(i, a, r, h) #define INSQUE(e, p) insque(e, p)
#define HCREATE_R(n, h) hcreate_r(n, h) #define REMQUE(e) remque(e)
#define HDESTROY_R(h) hdestroy_r(h) #define HSEARCH(i, a) hsearch(i, a)
#define TSEARCH(k, r, c) tsearch(k, r, c) #define HCREATE(n) hcreate(n)
#define TFIND(k, r, c) tfind(k, r, c) #define HDESTROY() hdestroy()
#define TDELETE(k, r, c) tdelete(k, r, c) #define HSEARCH_R(i, a, r, h) hsearch_r(i, a, r, h)
#define TWALK(r, a) twalk(r, a) #define HCREATE_R(n, h) hcreate_r(n, h)
#define TDESTROY(r, f) tdestroy(r, f) #define HDESTROY_R(h) hdestroy_r(h)
#define LFIND(k, b, n, s, c) lfind(k, b, n, s, c) #define TSEARCH(k, r, c) tsearch(k, r, c)
#define LSEARCH(k, b, n, s, c) lsearch(k, b, n, s, c) #define TFIND(k, r, c) tfind(k, r, c)
#define TDELETE(k, r, c) tdelete(k, r, c)
#define TWALK(r, a) twalk(r, a)
#define TDESTROY(r, f) tdestroy(r, f)
#define LFIND(k, b, n, s, c) lfind(k, b, n, s, c)
#define LSEARCH(k, b, n, s, c) lsearch(k, b, n, s, c)
#else #else
#define DIR_SEPARATOR '\\' #define DIR_SEPARATOR '\\'
#define DIR_SEPARATOR_STR "\\" #define DIR_SEPARATOR_STR "\\"
#define PATH_SEPARATOR ';' #define PATH_SEPARATOR ';'
#define PATH_SEPARATOR_STR ";" #define PATH_SEPARATOR_STR ";"
#define NEWLINE "\r\n" #define NEWLINE "\r\n"
#ifdef ENABLE_NLS #ifdef ENABLE_NLS
#define BINDTEXTDOMAIN(d, n) _win_bindtextdomain(d, n) #define BINDTEXTDOMAIN(d, n) _win_bindtextdomain(d, n)
#endif #endif
#define CREAT(p, m) _win_creat(p, m) #define CREAT(p, m) _win_creat(p, m)
#define PLIBC_CTIME(c) _win_ctime(c) #define PLIBC_CTIME(c) _win_ctime(c)
#define CTIME_R(c, b) _win_ctime_r(c, b) #define CTIME_R(c, b) _win_ctime_r(c, b)
#define FOPEN(f, m) _win_fopen(f, m) #define FOPEN(f, m) _win_fopen(f, m)
#define FTRUNCATE(f, l) _win_ftruncate(f, l) #define FCLOSE(f) _win_fclose(f)
#define OPENDIR(d) _win_opendir(d) #define FTRUNCATE(f, l) _win_ftruncate(f, l)
#define OPEN _win_open #define OPENDIR(d) _win_opendir(d)
#define CHDIR(d) _win_chdir(d) #define CLOSEDIR(d) _win_closedir(d)
#define CLOSE(f) _win_close(f) #define READDIR(d) _win_readdir(d)
#define PLIBC_KILL(p, s) _win_kill(p, s) #define OPEN _win_open
#define LSEEK(f, o, w) _win_lseek(f, o, w) #define CHDIR(d) _win_chdir(d)
#define FSTAT(h, b) _win_fstat(h, b) #define CLOSE(f) _win_close(f)
#define RMDIR(f) _win_rmdir(f) #define PLIBC_KILL(p, s) _win_kill(p, s)
#define ACCESS(p, m) _win_access(p, m) #define LSEEK(f, o, w) _win_lseek(f, o, w)
#define CHMOD(f, p) _win_chmod(f, p) #define FSTAT(h, b) _win_fstat(h, b)
#define PIPE(h) _win_pipe(h) #define RMDIR(f) _win_rmdir(f)
#define RANDOM() _win_random() #define ACCESS(p, m) _win_access(p, m)
#define SRANDOM(s) _win_srandom(s) #define CHMOD(f, p) _win_chmod(f, p)
#define REMOVE(p) _win_remove(p) #define PIPE(h) _win_pipe(h)
#define RENAME(o, n) _win_rename(o, n) #define RANDOM() _win_random()
#define STAT(p, b) _win_stat(p, b) #define SRANDOM(s) _win_srandom(s)
#define STAT64(p, b) _win_stat64(p, b) #define REMOVE(p) _win_remove(p)
#define SYSCONF(n) _win_sysconf(n) #define RENAME(o, n) _win_rename(o, n)
#define UNLINK(f) _win_unlink(f) #define STAT(p, b) _win_stat(p, b)
#define WRITE(f, b, n) _win_write(f, b, n) #define STAT64(p, b) _win_stat64(p, b)
#define READ(f, b, n) _win_read(f, b, n) #define SYSCONF(n) _win_sysconf(n)
#define GN_FREAD(b, s, c, f) _win_fread(b, s, c, f) #define UNLINK(f) _win_unlink(f)
#define GN_FWRITE(b, s, c, f) _win_fwrite(b, s, c, f) #define WRITE(f, b, n) _win_write(f, b, n)
#define SYMLINK(a, b) _win_symlink(a, b) #define READ(f, b, n) _win_read(f, b, n)
#define MMAP(s, l, p, f, d, o) _win_mmap(s, l, p, f, d, o) #define GN_FREAD(b, s, c, f) _win_fread(b, s, c, f)
#define MUNMAP(s, l) _win_munmap(s, l) #define GN_FWRITE(b, s, c, f) _win_fwrite(b, s, c, f)
#define STRERROR(i) _win_strerror(i) #define SYMLINK(a, b) _win_symlink(a, b)
#define READLINK(p, b, s) _win_readlink(p, b, s) #define MMAP(s, l, p, f, d, o) _win_mmap(s, l, p, f, d, o)
#define LSTAT(p, b) _win_lstat(p, b) #define MKFIFO(p, m) _win_mkfifo(p, m)
#define LSTAT64(p, b) _win_lstat64(p, b) #define MSYNC(s, l, f) _win_msync(s, l, f)
#define PRINTF(f, ...) _win_printf(f , __VA_ARGS__) #define MUNMAP(s, l) _win_munmap(s, l)
#define FPRINTF(fil, fmt, ...) _win_fprintf(fil, fmt, __VA_ARGS__) #define STRERROR(i) _win_strerror(i)
#define VPRINTF(f, a) _win_vprintf(f, a) #define READLINK(p, b, s) _win_readlink(p, b, s)
#define VFPRINTF(s, f, a) _win_vfprintf(s, f, a) #define LSTAT(p, b) _win_lstat(p, b)
#define VSPRINTF(d, f, a) _win_vsprintf(d, f, a) #define LSTAT64(p, b) _win_lstat64(p, b)
#define VSNPRINTF(str, size, fmt, a) _win_vsnprintf(str, size, fmt, a) #define PRINTF(f, ...) _win_printf(f , __VA_ARGS__)
#define _REAL_SNPRINTF(str, size, fmt, ...) _win_snprintf(str, size, fmt, _ #define FPRINTF(fil, fmt, ...) _win_fprintf(fil, fmt, __VA_ARGS__)
_VA_ARGS__) #define VPRINTF(f, a) _win_vprintf(f, a)
#define SPRINTF(d, f, ...) _win_sprintf(d, f, __VA_ARGS__) #define VFPRINTF(s, f, a) _win_vfprintf(s, f, a)
#define VSSCANF(s, f, a) _win_vsscanf(s, f, a) #define VSPRINTF(d, f, a) _win_vsprintf(d, f, a)
#define SSCANF(s, f, ...) _win_sscanf(s, f, __VA_ARGS__) #define VSNPRINTF(str, size, fmt, a) _win_vsnprintf(str, size, fmt, a)
#define VFSCANF(s, f, a) _win_vfscanf(s, f, a) #define _REAL_SNPRINTF(str, size, fmt, ...) _win_snprintf(str, size, fmt,
#define VSCANF(f, a) _win_vscanf(f, a) __VA_ARGS__)
#define SCANF(f, ...) _win_scanf(f, __VA_ARGS__) #define SPRINTF(d, f, ...) _win_sprintf(d, f, __VA_ARGS__)
#define FSCANF(s, f, ...) _win_fscanf(s, f, __VA_ARGS__) #define VSSCANF(s, f, a) _win_vsscanf(s, f, a)
#define WAITPID(p, s, o) _win_waitpid(p, s, o) #define SSCANF(s, f, ...) _win_sscanf(s, f, __VA_ARGS__)
#define ACCEPT(s, a, l) _win_accept(s, a, l) #define VFSCANF(s, f, a) _win_vfscanf(s, f, a)
#define BIND(s, n, l) _win_bind(s, n, l) #define VSCANF(f, a) _win_vscanf(f, a)
#define CONNECT(s, n, l) _win_connect(s, n, l) #define SCANF(f, ...) _win_scanf(f, __VA_ARGS__)
#define GETPEERNAME(s, n, l) _win_getpeername(s, n, l) #define FSCANF(s, f, ...) _win_fscanf(s, f, __VA_ARGS__)
#define GETSOCKNAME(s, n, l) _win_getsockname(s, n, l) #define WAITPID(p, s, o) _win_waitpid(p, s, o)
#define GETSOCKOPT(s, l, o, v, p) _win_getsockopt(s, l, o, v, p) #define ACCEPT(s, a, l) _win_accept(s, a, l)
#define LISTEN(s, b) _win_listen(s, b) #define BIND(s, n, l) _win_bind(s, n, l)
#define RECV(s, b, l, f) _win_recv(s, b, l, f) #define CONNECT(s, n, l) _win_connect(s, n, l)
#define RECVFROM(s, b, l, f, r, o) _win_recvfrom(s, b, l, f, r, o) #define GETPEERNAME(s, n, l) _win_getpeername(s, n, l)
#define SELECT(n, r, w, e, t) _win_select(n, r, w, e, t) #define GETSOCKNAME(s, n, l) _win_getsockname(s, n, l)
#define SEND(s, b, l, f) _win_send(s, b, l, f) #define GETSOCKOPT(s, l, o, v, p) _win_getsockopt(s, l, o, v, p)
#define SENDTO(s, b, l, f, o, n) _win_sendto(s, b, l, f, o, n) #define LISTEN(s, b) _win_listen(s, b)
#define SETSOCKOPT(s, l, o, v, n) _win_setsockopt(s, l, o, v, n) #define RECV(s, b, l, f) _win_recv(s, b, l, f)
#define SHUTDOWN(s, h) _win_shutdown(s, h) #define RECVFROM(s, b, l, f, r, o) _win_recvfrom(s, b, l, f, r, o)
#define SOCKET(a, t, p) _win_socket(a, t, p) #define SELECT(n, r, w, e, t) _win_select(n, r, w, e, t)
#define GETHOSTBYADDR(a, l, t) _win_gethostbyname(a, l, t) #define SEND(s, b, l, f) _win_send(s, b, l, f)
#define GETHOSTBYNAME(n) _win_gethostbyname(n) #define SENDTO(s, b, l, f, o, n) _win_sendto(s, b, l, f, o, n)
#define GETTIMEOFDAY(t, n) _win_gettimeofday(t, n) #define SETSOCKOPT(s, l, o, v, n) _win_setsockopt(s, l, o, v, n)
#define INSQUE(e, p) _win_insque(e, p) #define SHUTDOWN(s, h) _win_shutdown(s, h)
#define REMQUE(e) _win_remque(e) #define SOCKET(a, t, p) _win_socket(a, t, p)
#define HSEARCH(i, a) _win_hsearch(i, a) #define GETHOSTBYADDR(a, l, t) _win_gethostbyname(a, l, t)
#define HCREATE(n) _win_hcreate(n) #define GETHOSTBYNAME(n) _win_gethostbyname(n)
#define HDESTROY() _win_hdestroy() #define GETTIMEOFDAY(t, n) _win_gettimeofday(t, n)
#define HSEARCH_R(i, a, r, h) _win_hsearch_r(i, a, r, h) #define INSQUE(e, p) _win_insque(e, p)
#define HCREATE_R(n, h) _win_hcreate_r(n, h) #define REMQUE(e) _win_remque(e)
#define HDESTROY_R(h) _win_hdestroy_r(h) #define HSEARCH(i, a) _win_hsearch(i, a)
#define TSEARCH(k, r, c) _win_tsearch(k, r, c) #define HCREATE(n) _win_hcreate(n)
#define TFIND(k, r, c) _win_tfind(k, r, c) #define HDESTROY() _win_hdestroy()
#define TDELETE(k, r, c) _win_tdelete(k, r, c) #define HSEARCH_R(i, a, r, h) _win_hsearch_r(i, a, r, h)
#define TWALK(r, a) _win_twalk(r, a) #define HCREATE_R(n, h) _win_hcreate_r(n, h)
#define TDESTROY(r, f) _win_tdestroy(r, f) #define HDESTROY_R(h) _win_hdestroy_r(h)
#define LFIND(k, b, n, s, c) _win_lfind(k, b, n, s, c) #define TSEARCH(k, r, c) _win_tsearch(k, r, c)
#define LSEARCH(k, b, n, s, c) _win_lsearch(k, b, n, s, c) #define TFIND(k, r, c) _win_tfind(k, r, c)
#define TDELETE(k, r, c) _win_tdelete(k, r, c)
#define TWALK(r, a) _win_twalk(r, a)
#define TDESTROY(r, f) _win_tdestroy(r, f)
#define LFIND(k, b, n, s, c) _win_lfind(k, b, n, s, c)
#define LSEARCH(k, b, n, s, c) _win_lsearch(k, b, n, s, c)
#endif #endif
/* search.h */ /* search.h */
/* Prototype structure for a linked-list data structure. /* Prototype structure for a linked-list data structure.
This is the type used by the `insque' and `remque' functions. */ This is the type used by the `insque' and `remque' functions. */
struct PLIBC_SEARCH_QELEM struct PLIBC_SEARCH_QELEM
{ {
struct qelem *q_forw; struct qelem *q_forw;
struct qelem *q_back; struct qelem *q_back;
char q_data[1]; char q_data[1];
}; };
/* Insert ELEM into a doubly-linked list, after PREV. */ /* Insert ELEM into a doubly-linked list, after PREV. */
void _win_insque (void *__elem, void *__prev); void _win_insque (void *__elem, void *__prev);
/* Unlink ELEM from the doubly-linked list that it is in. */ /* Unlink ELEM from the doubly-linked list that it is in. */
void _win_remque (void *__elem); void _win_remque (void *__elem);
/* For use with hsearch(3). */ /* For use with hsearch(3). */
typedef int (*PLIBC_SEARCH__compar_fn_t) (__const void *, __const void *) ; typedef int (*PLIBC_SEARCH__compar_fn_t) (__const void *, __const void *);
typedef PLIBC_SEARCH__compar_fn_t _win_comparison_fn_t; typedef PLIBC_SEARCH__compar_fn_t _win_comparison_fn_t;
/* Action which shall be performed in the call the hsearch. */ /* Action which shall be performed in the call the hsearch. */
typedef enum typedef enum
{ {
PLIBC_SEARCH_FIND, PLIBC_SEARCH_FIND,
PLIBC_SEARCH_ENTER PLIBC_SEARCH_ENTER
} }
PLIBC_SEARCH_ACTION; PLIBC_SEARCH_ACTION;
typedef struct PLIBC_SEARCH_entry typedef struct PLIBC_SEARCH_entry
{ {
char *key; char *key;
void *data; void *data;
} }
PLIBC_SEARCH_ENTRY; PLIBC_SEARCH_ENTRY;
/* The reentrant version has no static variables to maintain the state. /* The reentrant version has no static variables to maintain the state.
Instead the interface of all functions is extended to take an argument Instead the interface of all functions is extended to take an argument
which describes the current status. */ which describes the current status. */
typedef struct _PLIBC_SEARCH_ENTRY typedef struct _PLIBC_SEARCH_ENTRY
{ {
unsigned int used; unsigned int used;
PLIBC_SEARCH_ENTRY entry; PLIBC_SEARCH_ENTRY entry;
} }
_PLIBC_SEARCH_ENTRY; _PLIBC_SEARCH_ENTRY;
/* Family of hash table handling functions. The functions also /* Family of hash table handling functions. The functions also
have reentrant counterparts ending with _r. The non-reentrant have reentrant counterparts ending with _r. The non-reentrant
functions all work on a signle internal hashing table. */ functions all work on a signle internal hashing table. */
/* Search for entry matching ITEM.key in internal hash table. If /* Search for entry matching ITEM.key in internal hash table. If
ACTION is `FIND' return found entry or signal error by returning ACTION is `FIND' return found entry or signal error by returning
NULL. If ACTION is `ENTER' replace existing data (if any) with NULL. If ACTION is `ENTER' replace existing data (if any) with
ITEM.data. */ ITEM.data. */
PLIBC_SEARCH_ENTRY *_win_hsearch (PLIBC_SEARCH_ENTRY __item, PLIBC_SEARCH_ENTRY *_win_hsearch (PLIBC_SEARCH_ENTRY __item, PLIBC_SEARCH_A
PLIBC_SEARCH_ACTION __action); CTION __action);
/* Create a new hashing table which will at most contain NEL elements. */ /* Create a new hashing table which will at most contain NEL elements. */
int _win_hcreate (size_t __nel); int _win_hcreate (size_t __nel);
/* Destroy current internal hashing table. */ /* Destroy current internal hashing table. */
void _win_hdestroy (void); void _win_hdestroy (void);
/* Data type for reentrant functions. */ /* Data type for reentrant functions. */
struct PLIBC_SEARCH_hsearch_data struct PLIBC_SEARCH_hsearch_data
{ {
struct _PLIBC_SEARCH_ENTRY *table; struct _PLIBC_SEARCH_ENTRY *table;
unsigned int size; unsigned int size;
unsigned int filled; unsigned int filled;
}; };
/* Reentrant versions which can handle multiple hashing tables at the /* Reentrant versions which can handle multiple hashing tables at the
same time. */ same time. */
int _win_hsearch_r (PLIBC_SEARCH_ENTRY __item, PLIBC_SEARCH_ACTION __acti int _win_hsearch_r (PLIBC_SEARCH_ENTRY __item, PLIBC_SEARCH_ACTION __action
on, , PLIBC_SEARCH_ENTRY **__retval,
PLIBC_SEARCH_ENTRY ** __retval, struct PLIBC_SEARCH_hsearch_data *__htab);
struct PLIBC_SEARCH_hsearch_data *__htab); int _win_hcreate_r (size_t __nel, struct PLIBC_SEARCH_hsearch_data *__htab)
int _win_hcreate_r (size_t __nel, struct PLIBC_SEARCH_hsearch_data *__hta ;
b); void _win_hdestroy_r (struct PLIBC_SEARCH_hsearch_data *__htab);
void _win_hdestroy_r (struct PLIBC_SEARCH_hsearch_data *__htab);
/* The tsearch routines are very interesting. They make many /* The tsearch routines are very interesting. They make many
assumptions about the compiler. It assumes that the first field assumptions about the compiler. It assumes that the first field
in node must be the "key" field, which points to the datum. in node must be the "key" field, which points to the datum.
Everything depends on that. */ Everything depends on that. */
/* For tsearch */ /* For tsearch */
typedef enum typedef enum
{ {
PLIBC_SEARCH_preorder, PLIBC_SEARCH_preorder,
PLIBC_SEARCH_postorder, PLIBC_SEARCH_postorder,
PLIBC_SEARCH_endorder, PLIBC_SEARCH_endorder,
PLIBC_SEARCH_leaf PLIBC_SEARCH_leaf
} }
PLIBC_SEARCH_VISIT; PLIBC_SEARCH_VISIT;
/* Search for an entry matching the given KEY in the tree pointed to /* Search for an entry matching the given KEY in the tree pointed to
by *ROOTP and insert a new element if not found. */ by *ROOTP and insert a new element if not found. */
void *_win_tsearch (__const void *__key, void **__rootp, void *_win_tsearch (__const void *__key, void **__rootp,
PLIBC_SEARCH__compar_fn_t __compar); PLIBC_SEARCH__compar_fn_t __compar);
/* Search for an entry matching the given KEY in the tree pointed to /* Search for an entry matching the given KEY in the tree pointed to
by *ROOTP. If no matching entry is available return NULL. */ by *ROOTP. If no matching entry is available return NULL. */
void *_win_tfind (__const void *__key, void *__const * __rootp, void *_win_tfind (__const void *__key, void *__const *__rootp,
PLIBC_SEARCH__compar_fn_t __compar); PLIBC_SEARCH__compar_fn_t __compar);
/* Remove the element matching KEY from the tree pointed to by *ROOTP. */ /* Remove the element matching KEY from the tree pointed to by *ROOTP. */
void *_win_tdelete (__const void *__restrict __key, void **__restrict __r void *_win_tdelete (__const void *__restrict __key,
ootp, void **__restrict __rootp,
PLIBC_SEARCH__compar_fn_t __compar); PLIBC_SEARCH__compar_fn_t __compar);
typedef void (*PLIBC_SEARCH__action_fn_t) (__const void *__nodep, typedef void (*PLIBC_SEARCH__action_fn_t) (__const void *__nodep, PLIBC_SEA
PLIBC_SEARCH_VISIT __value, RCH_VISIT __value,
int __level); int __level);
/* Walk through the whole tree and call the ACTION callback for every node /* Walk through the whole tree and call the ACTION callback for every node
or leaf. */ or leaf. */
void _win_twalk (__const void *__root, PLIBC_SEARCH__action_fn_t __action ); void _win_twalk (__const void *__root, PLIBC_SEARCH__action_fn_t __action);
/* Callback type for function to free a tree node. If the keys are atomic /* Callback type for function to free a tree node. If the keys are atomic
data this function should do nothing. */ data this function should do nothing. */
typedef void (*PLIBC_SEARCH__free_fn_t) (void *__nodep); typedef void (*PLIBC_SEARCH__free_fn_t) (void *__nodep);
/* Destroy the whole tree, call FREEFCT for each node or leaf. */ /* Destroy the whole tree, call FREEFCT for each node or leaf. */
void _win_tdestroy (void *__root, PLIBC_SEARCH__free_fn_t __freefct); void _win_tdestroy (void *__root, PLIBC_SEARCH__free_fn_t __freefct);
/* Perform linear search for KEY by comparing by COMPAR in an array /* Perform linear search for KEY by comparing by COMPAR in an array
[BASE,BASE+NMEMB*SIZE). */ [BASE,BASE+NMEMB*SIZE). */
void *_win_lfind (__const void *__key, __const void *__base, size_t * __n void *_win_lfind (__const void *__key, __const void *__base,
memb, size_t *__nmemb, size_t __size, PLIBC_SEARCH__compar_fn_t __compar)
size_t __size, PLIBC_SEARCH__compar_fn_t __compar); ;
/* Perform linear search for KEY by comparing by COMPAR function in /* Perform linear search for KEY by comparing by COMPAR function in
array [BASE,BASE+NMEMB*SIZE) and insert entry if not found. */ array [BASE,BASE+NMEMB*SIZE) and insert entry if not found. */
void *_win_lsearch (__const void *__key, void *__base, size_t * __nmemb, void *_win_lsearch (__const void *__key, void *__base,
size_t __size, PLIBC_SEARCH__compar_fn_t __compar); size_t *__nmemb, size_t __size, PLIBC_SEARCH__compar_fn_t __compa
r);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif //_PLIBC_H_ #endif //_PLIBC_H_
/* end of plibc.h */ /* end of plibc.h */
 End of changes. 79 change blocks. 
524 lines changed or deleted 583 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/