Overview

Request 262 (accepted)

update to 3.1.3, fix i586 runtime problem

Submit package home:seife:branches:Extra / mldonkey to package Extra / mldonkey

MLDonkey.changes Changed
x
 
1
@@ -1,4 +1,14 @@
2
 -------------------------------------------------------------------
3
+Thu Aug 23 07:53:31 UTC 2012 - seife+obs@b1-systems.com
4
+
5
+- update to 3.1.3
6
+- remove mldonkey-fix_missing_return_in_non_void_functions.patch,
7
+  instead just remove pentium asm optimization
8
+  * note: the code the compiler complains about is probably
9
+    correct albeit obscure (asm code that puts the return code
10
+    onto the stack), the easiest fix is to disable it.
11
+
12
+-------------------------------------------------------------------
13
 Thu Aug 16 21:34:06 UTC 2012 - seife+obs@b1-systems.com
14
 
15
 - fix build for 12.2 (add --disable-option-checking to configure)
16
MLDonkey.spec Changed
26
 
1
@@ -18,13 +18,13 @@
2
 
3
 Name:           MLDonkey
4
 Summary:        Filesharing client for eDonkey 2000 and other P2P systems
5
-Version:        3.1.2
6
+Version:        3.1.3
7
 Release:        0.pm
8
 License:        Other License(s), see package, GPL-2.0+
9
 Group:          Productivity/Networking/Other
10
 URL:            http://mldonkey.sourceforge.net/Main_Page
11
 Source:         http://prdownloads.sourceforge.net/mldonkey/mldonkey-%{version}.tar.bz2
12
-Patch1:         mldonkey-fix_missing_return_in_non_void_functions.patch
13
+Patch1:         mldonkey-disable-asm-opt.patch
14
 Patch2:         mldonkey-link_against_libpng.patch
15
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root
16
 BuildRequires:  gcc gcc-c++ perl wget qt3-devel
17
@@ -84,7 +84,7 @@
18
 
19
 %prep
20
 %setup -q -n %{sourcename}-%{version}
21
-%patch1
22
+%patch1 -p1
23
 %patch2
24
 
25
 %build
26
mldonkey-disable-asm-opt.patch Added
26
 
1
@@ -0,0 +1,24 @@
2
+Index: b/src/utils/lib/CryptoPP.h
3
+===================================================================
4
+--- a/src/utils/lib/CryptoPP.h
5
++++ b/src/utils/lib/CryptoPP.h
6
+@@ -269,17 +269,19 @@ NAMESPACE_END
7
+ 
8
+ #ifndef CRYPTOPP_DISABLE_UNCAUGHT_EXCEPTION
9
+ #define CRYPTOPP_UNCAUGHT_EXCEPTION_AVAILABLE
10
+ #endif
11
+ 
12
++#if 0
13
+ // CodeWarrior defines _MSC_VER
14
+ #if !defined(CRYPTOPP_DISABLE_X86ASM) && ((defined(_MSC_VER) && !defined(__MWERKS__) && defined(_M_IX86)) || (defined(__GNUC__) && defined(__i386__)))
15
+   // The x86 version of MacOSX fails when asm is enabled.
16
+   #if !defined(__i386__) || !defined(__APPLE__)
17
+       #define CRYPTOPP_X86ASM_AVAILABLE
18
+   #endif
19
+ #endif
20
++#endif
21
+ 
22
+ // ***************** determine availability of OS features ********************
23
+ 
24
+ #ifndef NO_OS_DEPENDENCE
25
+ 
26
mldonkey-fix_missing_return_in_non_void_functions.patch Deleted
40
 
1
@@ -1,38 +0,0 @@
2
---- src/utils/lib/CryptoPP.cc.orig 2011-03-13 01:52:20.000000000 +0100
3
-+++ src/utils/lib/CryptoPP.cc  2011-03-13 01:52:59.000000000 +0100
4
-@@ -2732,7 +2732,7 @@
5
-   AddEpilogue
6
- 
7
-   // Just to get rid of warnings
8
--  // return 0;
9
-+  return 0;
10
- }
11
- 
12
- CRYPTOPP_NAKED word PentiumOptimized::Subtract(word *C, const word *A, const word *B, unsigned int N)
13
-@@ -2773,7 +2773,7 @@
14
-   AddEpilogue
15
- 
16
-   // Just to get rid of warnings
17
--  // return 0;
18
-+  return 0;
19
- }
20
- 
21
- // On Pentium 4, the adc and sbb instructions are very expensive, so avoid them.
22
-@@ -2825,7 +2825,7 @@
23
-   AddEpilogue
24
- 
25
-   // Just to get rid of warnings
26
--  // return 0;
27
-+  return 0;
28
- }
29
- 
30
- CRYPTOPP_NAKED word P4Optimized::Subtract(word *C, const word *A, const word *B, unsigned int N)
31
-@@ -2875,7 +2875,7 @@
32
-   AddEpilogue
33
- 
34
-   // Just to get rid of warnings
35
--  // return 0;
36
-+  return 0;
37
- }
38
- 
39
- // multiply assembly code originally contributed by Leonard Janke
40
mldonkey-3.1.2.tar.bz2/Makefile -> mldonkey-3.1.3.tar.bz2/Makefile Changed
49
 
1
@@ -5033,7 +5033,7 @@
2
    $(OCAMLDOC) -sort -dump ocamldoc/ocamldocdump -html -d ocamldoc $(INCLUDES) $(libclient_DOC) $(CORE_DOC)
3
 
4
 $(LIB)/md4_cc.o: $(LIB)/md4.c
5
-   $(OCAMLC) -ccopt "$(CFLAGS) -O3 -o $(LIB)/md4_cc.o" -ccopt "" -c $(LIB)/md4.c
6
+   $(OCAMLC) -ccopt "$(CFLAGS) -o $(LIB)/md4_cc.o" -ccopt "" -c $(LIB)/md4.c
7
 
8
 $(CDK)/heap_c.o: $(CDK)/heap_c.c
9
    $(OCAMLC) -ccopt "$(CFLAGS) $(MORECFLAGS) -o $(CDK)/heap_c.o" -ccopt "" -c $(CDK)/heap_c.c
10
@@ -5047,7 +5047,7 @@
11
 
12
 zogml:
13
    (for i in $(GUI_CODE)/gui*_base.zog ; do \
14
-       $(CAMLP4) pa_o.cmo pa_zog.cma pr_o.cmo -impl $$i > $(GUI_CODE)/`basename $$i zog`ml ;\
15
+       $(CAMLP4) pa_o.cmo pa_zog.cma pr_o.cmo -impl $$i -o $(GUI_CODE)/`basename $$i zog`ml ;\
16
    done)
17
 
18
 #######################################################################
19
@@ -5447,7 +5447,7 @@
20
    $(OCAMLC) $(DEVFLAGS) $(INCLUDES) -c $<
21
 
22
 .mlcpp.ml:
23
-   @$(CPP) -x c -P $< $(FIX_BROKEN_CPP) -o $@
24
+   @$(CPP) -x c -P $< $(FIX_BROKEN_CPP) > $@
25
 
26
 %.ml: %.mlp $(BITSTRING)/pa_bitstring.cmo
27
    $(CAMLP4OF) build/bitstring.cma $(BITSTRING)/bitstring_persistent.cmo $(BITSTRING)/pa_bitstring.cmo -impl $< -o $@
28
@@ -5462,17 +5462,16 @@
29
    @$(OCAMLYACC) $<
30
 
31
 .zog.ml:
32
-   @$(CAMLP4) pa_o.cmo ./pa_zog.cma pr_o.cmo -impl $< > $@
33
+   @$(CAMLP4) pa_o.cmo ./pa_zog.cma pr_o.cmo -impl $< -o $@
34
 
35
 .ml4.ml:
36
-   @echo '# 1 "$<"' > $@
37
-   @$(CAMLP4) pa_o.cmo pa_op.cmo pr_o.cmo -impl $< >> $@
38
+   @$(CAMLP4) pa_o.cmo pa_op.cmo pr_o.cmo -impl $< -o $@
39
 
40
 .mlc4.ml:
41
    @$(CAMLP4OF) -I +camlp4 -impl $< -o $@
42
 
43
 .mlt.ml:
44
-   @$(OCAMLPP) -pp $< > $@
45
+   @$(OCAMLPP) -o $@ -pp $<
46
 
47
 .c.o :
48
    $(OCAMLC) -verbose -ccopt "-I $(OCAML_SRC)/byterun -o $*.o" -ccopt "$(CFLAGS)" $(LIBS_flags) -c $<
49
mldonkey-3.1.2.tar.bz2/config/Makefile.in -> mldonkey-3.1.3.tar.bz2/config/Makefile.in Changed
49
 
1
@@ -1434,7 +1434,7 @@
2
    $(OCAMLDOC) -sort -dump ocamldoc/ocamldocdump -html -d ocamldoc $(INCLUDES) $(libclient_DOC) $(CORE_DOC)
3
 
4
 $(LIB)/md4_cc.o: $(LIB)/md4.c
5
-   $(OCAMLC) -ccopt "$(CFLAGS) -O3 -o $(LIB)/md4_cc.o" -ccopt "" -c $(LIB)/md4.c
6
+   $(OCAMLC) -ccopt "$(CFLAGS) -o $(LIB)/md4_cc.o" -ccopt "" -c $(LIB)/md4.c
7
 
8
 $(CDK)/heap_c.o: $(CDK)/heap_c.c
9
    $(OCAMLC) -ccopt "$(CFLAGS) $(MORECFLAGS) -o $(CDK)/heap_c.o" -ccopt "" -c $(CDK)/heap_c.c
10
@@ -1448,7 +1448,7 @@
11
 
12
 zogml:
13
    (for i in $(GUI_CODE)/gui*_base.zog ; do \
14
-       $(CAMLP4) pa_o.cmo pa_zog.cma pr_o.cmo -impl $$i > $(GUI_CODE)/`basename $$i zog`ml ;\
15
+       $(CAMLP4) pa_o.cmo pa_zog.cma pr_o.cmo -impl $$i -o $(GUI_CODE)/`basename $$i zog`ml ;\
16
    done)
17
 
18
 #######################################################################
19
@@ -1848,7 +1848,7 @@
20
    $(OCAMLC) $(DEVFLAGS) $(INCLUDES) -c $<
21
 
22
 .mlcpp.ml:
23
-   @$(CPP) -x c -P $< $(FIX_BROKEN_CPP) -o $@
24
+   @$(CPP) -x c -P $< $(FIX_BROKEN_CPP) > $@
25
 
26
 %.ml: %.mlp $(BITSTRING)/pa_bitstring.cmo
27
    $(CAMLP4OF) build/bitstring.cma $(BITSTRING)/bitstring_persistent.cmo $(BITSTRING)/pa_bitstring.cmo -impl $< -o $@
28
@@ -1863,17 +1863,16 @@
29
    @$(OCAMLYACC) $<
30
 
31
 .zog.ml:
32
-   @$(CAMLP4) pa_o.cmo ./pa_zog.cma pr_o.cmo -impl $< > $@
33
+   @$(CAMLP4) pa_o.cmo ./pa_zog.cma pr_o.cmo -impl $< -o $@
34
 
35
 .ml4.ml:
36
-   @echo '# 1 "$<"' > $@
37
-   @$(CAMLP4) pa_o.cmo pa_op.cmo pr_o.cmo -impl $< >> $@
38
+   @$(CAMLP4) pa_o.cmo pa_op.cmo pr_o.cmo -impl $< -o $@
39
 
40
 .mlc4.ml:
41
    @$(CAMLP4OF) -I +camlp4 -impl $< -o $@
42
 
43
 .mlt.ml:
44
-   @$(OCAMLPP) -pp $< > $@
45
+   @$(OCAMLPP) -o $@ -pp $<
46
 
47
 .c.o :
48
    $(OCAMLC) -verbose -ccopt "-I $(OCAML_SRC)/byterun -o $*.o" -ccopt "$(CFLAGS)" $(LIBS_flags) -c $<
49
mldonkey-3.1.2.tar.bz2/config/configure -> mldonkey-3.1.3.tar.bz2/config/configure Changed
415
 
1
@@ -1450,8 +1450,8 @@
2
   --disable-gnutella2     disable support for Gnutella2
3
   --disable-fasttrack     disable support for FastTrack
4
   --enable-batch          reply YES to all queries in this script
5
-  --enable-force-ocaml    force usage of self-compiled Ocaml
6
-  --enable-ocamlver=VER   force usage of specific Ocaml version (3.10.1|SVN),
7
+  --enable-force-ocaml    force usage of self-compiled OCaml
8
+  --enable-ocamlver=VER   force usage of specific OCaml version (3.10.1|SVN),
9
   --enable-mingw          force compilation with MINGW on Cygwin
10
   --enable-checks         enable bounds-checking for array/string accesses
11
   --enable-profile        compile with gprof profiling support (enables debug)
12
@@ -2375,7 +2375,7 @@
13
 
14
 MAJOR_VERSION=3
15
 MINOR_VERSION=1
16
-SUB_VERSION=2   # range 0-7 due to eMule limitations
17
+SUB_VERSION=3   # range 0-7 due to eMule limitations
18
 
19
 # **********                                                                                  **********
20
 # **********                                  check for C compiler                            **********
21
@@ -3952,7 +3952,7 @@
22
 fi
23
 
24
 # **********                                                                                  **********
25
-# **********             build MLDonkey version, Required Ocaml and LablGTK versions          **********
26
+# **********             build MLDonkey version, Required OCaml and LablGTK versions          **********
27
 # **********                                                                                  **********
28
 
29
 MLDONKEY_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$SUB_VERSION
30
@@ -4218,7 +4218,8 @@
31
 
32
 OCAML_PATH=
33
 
34
-echo -e "\n--------------------------------"
35
+echo ""
36
+echo "--------------------------------"
37
 echo "     Checking system tools."
38
 echo "--------------------------------"
39
 
40
@@ -4687,10 +4688,10 @@
41
 
42
 echo "----------------------------------------"
43
 echo "     Checking system tools finished."
44
-echo -e "----------------------------------------\n"
45
-
46
+echo "----------------------------------------"
47
+echo ""
48
 echo "--------------------------------"
49
-echo "     Checking Ocaml compiler."
50
+echo "     Checking OCaml compiler."
51
 echo "--------------------------------"
52
 
53
 CONFIG_DIR=$SOURCE_DIR/config
54
@@ -4890,7 +4891,7 @@
55
 else
56
   OCAMLVERSION=`$OCAMLC -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
57
   case "$OCAMLVERSION" in
58
-    "$REQUIRED_OCAML"*|3.12.*|3.11.*|3.10.1*|3.10.2*) ;;
59
+    "$REQUIRED_OCAML"*|4.*|3.12.*|3.11.*|3.10.1*|3.10.2*) ;;
60
     *)
61
         echo "Need build"
62
         BUILD_OCAML=yes
63
@@ -4908,18 +4909,18 @@
64
 
65
   if  test "$SYSTEM" = "mingw" ; then
66
     echo "********         Objective-Caml $REQUIRED_OCAML is required               *********" 1>&2;
67
-    echo "********     no valid Ocaml compiler found on your system        *********" 1>&2;
68
+    echo "********     no valid OCaml compiler found on your system        *********" 1>&2;
69
     echo "********   on MinGW there is no possibility to let configure     *********" 1>&2;
70
-    echo "********   build the Ocaml compiler with the included script     *********" 1>&2;
71
+    echo "********   build the OCaml compiler with the included script     *********" 1>&2;
72
     echo "********    check http://mldonkey.sourceforge.net/Windows        *********" 1>&2;
73
-    echo "********   for instuctions how to compile Ocaml under MinGW      *********" 1>&2;
74
+    echo "********   for instuctions how to compile OCaml under MinGW      *********" 1>&2;
75
     exit 1
76
   else
77
 
78
   echo "********  Objective-Caml $REQUIRED_OCAML is required  *********" 1>&2;
79
   if  test "$WGET" = ""  &&  test "$REQUIRED_OCAML" != "SVN" ; then
80
     echo "********          wget is missing          *********" 1>&2;
81
-    echo "********       cannot download Ocaml       *********" 1>&2;
82
+    echo "********       cannot download OCaml       *********" 1>&2;
83
     exit 1
84
   fi
85
   echo "*******  Check http://caml.inria.fr/  ********" 1>&2;
86
@@ -4947,7 +4948,7 @@
87
           $WGET http://caml.inria.fr/pub/distrib/ocaml-3.10/ocaml-"$REQUIRED_OCAML".tar.gz
88
         fi
89
         if test ! -f ocaml-"$REQUIRED_OCAML".tar.gz; then
90
-          echo "********        download Ocaml $REQUIRED_OCAML not successful, try do download it manually       *********" 1>&2;
91
+          echo "********        download OCaml $REQUIRED_OCAML not successful, try do download it manually       *********" 1>&2;
92
           echo "********        from http://caml.inria.fr/pub/distrib/                                   *********" 1>&2;
93
           echo "********        and copy the tar.gz into $PATCH_DIR              *********" 1>&2;
94
           exit 1
95
@@ -4987,7 +4988,7 @@
96
         rm -rf ocaml-"$REQUIRED_OCAML"
97
       fi
98
       cd $CONFIG_DIR
99
-      echo Ocaml locally installed for mldonkey
100
+      echo OCaml locally installed for mldonkey
101
 
102
       if test -f "$LOCAL_OCAML"/ocamlc.opt; then
103
          OCAMLC=$LOCAL_OCAML/ocamlc.opt
104
@@ -4997,7 +4998,7 @@
105
          OCAMLC=$LOCAL_OCAML/ocamlc
106
          ac_cv_prog_OCAMLC=$LOCAL_OCAML/ocamlc
107
       else
108
-        echo "Ocaml installation failed"; exit 1
109
+        echo "OCaml installation failed"; exit 1
110
       fi
111
       fi
112
       ;;
113
@@ -5420,9 +5421,9 @@
114
   CAMLP4LIB_OPT="dynlink.cmxa $CAMLP4LIB_OPT"
115
 fi
116
 
117
-# force usage of supported Ocaml versions
118
+# force usage of supported OCaml versions
119
 case "$OCAMLVERSION" in
120
-    3.10.1*|3.10.2*|3.1*) ;;
121
+    3.10.1*|3.10.2*|3.1*|4.*) ;;
122
     *)
123
       if  test "$REQUIRED_OCAML" != "SVN" ; then
124
         echo "********  Version $REQUIRED_OCAML of Objective-Caml is required  *********" 1>&2;
125
@@ -5449,7 +5450,7 @@
126
 fi
127
 
128
 echo "-------------------------------------------"
129
-echo "     Checking Ocaml $OCAMLVERSION finished."
130
+echo "     Checking OCaml $OCAMLVERSION finished."
131
 echo "-------------------------------------------"
132
 
133
 
134
@@ -5467,7 +5468,8 @@
135
     OCAMLOPT="$OCAMLOPT -g"
136
 fi
137
 
138
-echo -e "\n----------------------------------"
139
+echo ""
140
+echo "----------------------------------"
141
 echo "     Checking system headers."
142
 echo "----------------------------------"
143
 
144
@@ -6310,7 +6312,8 @@
145
 
146
 echo "-------------------------------------------"
147
 echo "     Checking system headers finished."
148
-echo -e "-------------------------------------------\n"
149
+echo "-------------------------------------------"
150
+echo ""
151
 echo "-----------------------------------"
152
 echo "     Checking system libraries."
153
 echo "-----------------------------------"
154
@@ -6530,25 +6533,25 @@
155
 if test "$UPNP_NATPMP_FORCE" = "yes"; then
156
    UPNP_NATPMP=yes
157
    cd $PATCH_DIR
158
-   $WGET http://miniupnp.tuxfamily.org/files/miniupnpc-1.4.20100609.tar.gz
159
-   $WGET http://miniupnp.tuxfamily.org/files/libnatpmp-20100202.tar.gz
160
+   $WGET http://miniupnp.tuxfamily.org/files/miniupnpc-1.6.tar.gz
161
+   $WGET http://miniupnp.tuxfamily.org/files/libnatpmp-20110808.tar.gz
162
    mkdir -p $BUILD_DIR $LOCAL_DIR/usr/bin $LOCAL_DIR/usr/lib $LOCAL_DIR/usr/include/miniupnpc
163
    cd $BUILD_DIR
164
-   rm -rf libnatpmp-20100202 miniupnpc-1.4.20100609
165
-   tar -xzf $PATCH_DIR/miniupnpc-1.4.20100609.tar.gz
166
-   tar -xzf $PATCH_DIR/libnatpmp-20100202.tar.gz
167
-   cd $BUILD_DIR/libnatpmp-20100202
168
+   rm -rf libnatpmp-20110808 miniupnpc-1.6
169
+   tar -xzf $PATCH_DIR/miniupnpc-1.6.tar.gz
170
+   tar -xzf $PATCH_DIR/libnatpmp-20110808.tar.gz
171
+   cd $BUILD_DIR/libnatpmp-20110808
172
    make all install PREFIX=$LOCAL_DIR
173
-   cd $BUILD_DIR/miniupnpc-1.4.20100609
174
+   cd $BUILD_DIR/miniupnpc-1.6
175
    make all install PREFIX=$LOCAL_DIR
176
    cd $CONFIG_DIR
177
-   rm -rf $BUILD_DIR/libnatpmp-20100202 $BUILD_DIR/miniupnpc-1.4.20100609
178
+   rm -rf $BUILD_DIR/libnatpmp-20110808 $BUILD_DIR/miniupnpc-1.6
179
    CPPFLAGS="${CPPFLAGS} -I$LOCAL_DIR/usr/include"
180
    LDFLAGS="${LDFLAGS} -L$LOCAL_DIR/usr/lib"
181
 fi
182
 
183
 if test "$UPNP_NATPMP" = "yes"; then
184
-  echo "----- checking libminiupnpc >= 1.4.20100609 (optional)"
185
+  echo "----- checking libminiupnpc >= 1.6 (optional)"
186
   for ac_header in miniupnpc/miniupnpc.h
187
 do :
188
   ac_fn_c_check_header_mongrel "$LINENO" "miniupnpc/miniupnpc.h" "ac_cv_header_miniupnpc_miniupnpc_h" "$ac_includes_default"
189
@@ -6607,7 +6610,7 @@
190
 fi
191
 
192
 if test "$UPNP_NATPMP" = "yes"; then
193
-  echo "----- checking libnatpmp >= 20100202 (optional)"
194
+  echo "----- checking libnatpmp >= 20110808 (optional)"
195
   for ac_header in natpmp.h
196
 do :
197
   ac_fn_c_check_header_mongrel "$LINENO" "natpmp.h" "ac_cv_header_natpmp_h" "$ac_includes_default"
198
@@ -8570,7 +8573,8 @@
199
 
200
 echo "---------------------------------------------"
201
 echo "     Checking system libraries finished."
202
-echo -e "---------------------------------------------\n"
203
+echo "---------------------------------------------"
204
+echo ""
205
 
206
 CXX_VERSION=
207
 CRYPTOPPFLAGS=
208
@@ -10771,17 +10775,20 @@
209
 
210
 cd ..
211
 
212
-echo -e "\nBuilding dependencies (if it blocks, try '$GNU_MAKE depend' to see the problem)"
213
+echo ""
214
+echo "Building dependencies (if it blocks, try '$GNU_MAKE depend' to see the problem)"
215
 $GNU_MAKE depend 2> /dev/null > /dev/null || echo "Building dependencies fails: try: '$GNU_MAKE depend'"
216
 
217
-echo -e -n "\nConfiguring MLDonkey" $MLDONKEY_VERSION
218
+echo ""
219
+printf "Configuring MLDonkey %s" "$MLDONKEY_VERSION"
220
 if test ! -z "$SCM_VERSION"; then
221
-  echo -n " - SCM: $SCM_VERSION"
222
+  printf " - SCM: %s" "$SCM_VERSION"
223
 fi
224
-echo " completed."
225
+ec " completed.\n"
226
 
227
-echo -e "\nNetwork modules:"
228
-echo -n " - eDonkey           "
229
+echo ""
230
+echo "Network modules:"
231
+printf " - eDonkey           "
232
 if test "$DONKEY" = "yes"; then
233
   if test "$DONKEY_SUI" = "yes"; then
234
     echo "enabled (eMule SUI enabled)"
235
@@ -10792,119 +10799,120 @@
236
   echo "        disabled"
237
 fi
238
 
239
-echo -n " - BitTorrent        "
240
+printf " - BitTorrent        "
241
 if test "$BITTORRENT" = "yes"; then
242
   echo "enabled"
243
 else
244
   echo "        disabled"
245
 fi
246
 
247
-echo -n " - FileTP (aka wget) "
248
+printf " - FileTP (aka wget) "
249
 if test "$FILETP" = "yes"; then
250
   echo "enabled"
251
 else
252
   echo "        disabled"
253
 fi
254
 
255
-echo -n " - Fasttrack         "
256
+printf " - Fasttrack         "
257
 if test "$FASTTRACK" = "yes"; then
258
   echo "enabled"
259
 else
260
   echo "        disabled"
261
 fi
262
 
263
-echo -n " - Gnutella          "
264
+printf " - Gnutella          "
265
 if test "$GNUTELLA" = "yes"; then
266
   echo "enabled (warning: this network module is unmaintained)"
267
 else
268
   echo "        disabled - unmaintained"
269
 fi
270
 
271
-echo -n " - Gnutella2         "
272
+printf " - Gnutella2         "
273
 if test "$GNUTELLA2" = "yes"; then
274
   echo "enabled (warning: this network module is unmaintained)"
275
 else
276
   echo "        disabled - unmaintained"
277
 fi
278
 
279
-echo -n " - Direct Connect    "
280
+printf " - Direct Connect    "
281
 if test "$DIRECT_CONNECT" = "yes"; then
282
   echo "enabled"
283
 else
284
   echo "        disabled"
285
 fi
286
 
287
-echo -n " - Open Napster      "
288
+printf " - Open Napster      "
289
 if test "$OPEN_NAPSTER" = "yes"; then
290
   echo "enabled          - currently not usable"
291
 else
292
   echo "        disabled - currently not usable"
293
 fi
294
 
295
-echo -n " - Soulseek          "
296
+printf " - Soulseek          "
297
 if test "$SOULSEEK" = "yes"; then
298
   echo "enabled          - currently not usable"
299
 else
300
   echo "        disabled - currently not usable"
301
 fi
302
 
303
-echo -n " - OpenFT            "
304
+printf " - OpenFT            "
305
 if test "$OPENFT" = "yes"; then
306
   echo "enabled          - currently not usable"
307
 else
308
   echo "        disabled - currently not usable"
309
 fi
310
 
311
-echo -e "\nCore features:"
312
+echo ""
313
+echo "Core features:"
314
 
315
 echo " - zlib (required)   enabled"
316
 
317
-echo -n " - threads           "
318
+printf " - threads           "
319
 if test "$USE_PTHREAD" = "yes"; then
320
   echo "enabled"
321
 else
322
   echo "        disabled"
323
 fi
324
 
325
-echo -n " - bzip2             "
326
+printf " - bzip2             "
327
 if test "$BZIP2" = "yes"; then
328
   echo "enabled"
329
 else
330
   echo "        disabled"
331
 fi
332
 
333
-echo -n " - iconv             "
334
+printf " - iconv             "
335
 if test "$ICONV" = "yes"; then
336
   echo "enabled"
337
 else
338
   echo "        disabled"
339
 fi
340
 
341
-echo -n " - libmagic          "
342
+printf " - libmagic          "
343
 if test "$MAGIC" = "yes"; then
344
   echo "enabled"
345
 else
346
   echo "        disabled"
347
 fi
348
 
349
-echo -n " - upnp & natpmp     "
350
+printf " - upnp & natpmp     "
351
 if test "$UPNP_NATPMP" = "yes"; then
352
   echo "enabled"
353
 else
354
   echo "        disabled"
355
 fi
356
 
357
-echo -n " - graphical stats   "
358
+printf " - graphical stats   "
359
 if test "$GD" = "yes"; then
360
   echo "enabled"
361
-  echo -n "   - png support     "
362
+  printf "   - png support     "
363
   if test "$GD_PNG" = "yes"; then
364
     echo "enabled"
365
   else
366
     echo "        disabled"
367
   fi
368
 
369
-  echo -n "   - jpg support     "
370
+  printf "   - jpg support     "
371
   if test "$GD_JPG" = "yes"; then
372
     echo "enabled"
373
   else
374
@@ -10915,7 +10923,8 @@
375
 fi
376
 
377
 if test "$LABLGTK_CONFIG" = "yes"; then
378
-  echo -n -e "\n - GUI support       "
379
+  echo ""
380
+  printf "\n - GUI support       "
381
   if test "$GUI" = "newgui1"; then
382
     echo "GTK1 newgui"
383
   else
384
@@ -10935,17 +10944,21 @@
385
   OCAML_TYPE="- byte code"
386
   COMPILE_TARGET=".byte"
387
 fi
388
-echo -e "\nCompilers:"
389
-echo -e " - Ocaml version     $OCAMLVERSION $OCAML_TYPE"
390
-echo -e " - $CC version       $CC_VERSION"
391
+echo ""
392
+printf "Compilers:"
393
+echo " - OCaml version     $OCAMLVERSION $OCAML_TYPE"
394
+echo " - $CC version       $CC_VERSION"
395
 if test "x$CXX" != "x"; then
396
-  echo -e " - $CXX version       $CXX_VERSION"
397
+  echo " - $CXX version       $CXX_VERSION"
398
 fi
399
-echo -e "\nNow execute '$GNU_MAKE' to start compiling. Good luck!"
400
+echo ""
401
+echo "\nNow execute '$GNU_MAKE' to start compiling. Good luck!"
402
 
403
-echo -e "\nTo compile a static code execute:     $GNU_MAKE mlnet$COMPILE_TARGET.static"
404
-echo      "To produce a release tarball execute: $GNU_MAKE release.mlnet.static"
405
-echo      "To clean the build directory execute: $GNU_MAKE maintainerclean"
406
+echo ""
407
+echo "To compile a static code execute:     $GNU_MAKE mlnet$COMPILE_TARGET.static"
408
+echo "To produce a release tarball execute: $GNU_MAKE release.mlnet.static"
409
+echo "To clean the build directory execute: $GNU_MAKE maintainerclean"
410
 if test "$DONKEY_SUI" = "yes"; then
411
-  echo -e "\nCompiling CryptoPP.cc can take several minutes, on slow machines up to half an hour."
412
+  echo ""
413
+  echo "Compiling CryptoPP.cc can take several minutes, on slow machines up to half an hour."
414
 fi
415
mldonkey-3.1.2.tar.bz2/config/configure.in -> mldonkey-3.1.3.tar.bz2/config/configure.in Changed
414
 
1
@@ -22,7 +22,7 @@
2
 
3
 MAJOR_VERSION=3
4
 MINOR_VERSION=1
5
-SUB_VERSION=2   # range 0-7 due to eMule limitations
6
+SUB_VERSION=3   # range 0-7 due to eMule limitations
7
 
8
 # **********                                                                                  **********
9
 # **********                                  check for C compiler                            **********
10
@@ -274,7 +274,7 @@
11
 fi
12
 
13
 # **********                                                                                  **********
14
-# **********             build MLDonkey version, Required Ocaml and LablGTK versions          **********
15
+# **********             build MLDonkey version, Required OCaml and LablGTK versions          **********
16
 # **********                                                                                  **********
17
 
18
 MLDONKEY_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$SUB_VERSION
19
@@ -408,10 +408,10 @@
20
   AS_HELP_STRING([--enable-batch], [reply YES to all queries in this script]),
21
   [BATCH="$enableval"])
22
 AC_ARG_ENABLE(force-ocaml,
23
-  AS_HELP_STRING([--enable-force-ocaml], [force usage of self-compiled Ocaml]),
24
+  AS_HELP_STRING([--enable-force-ocaml], [force usage of self-compiled OCaml]),
25
   [FORCE_OCAML="$enableval"])
26
 AC_ARG_ENABLE(ocamlver,
27
-  AS_HELP_STRING([--enable-ocamlver=VER], [force usage of specific Ocaml version (3.10.1|SVN), ]),
28
+  AS_HELP_STRING([--enable-ocamlver=VER], [force usage of specific OCaml version (3.10.1|SVN), ]),
29
   [REQUIRED_OCAML="$enableval"])
30
 AC_ARG_ENABLE(mingw,
31
   AS_HELP_STRING([--enable-mingw], [force compilation with MINGW on Cygwin]),
32
@@ -485,7 +485,8 @@
33
 
34
 OCAML_PATH=
35
 
36
-echo -e "\n--------------------------------"
37
+echo ""
38
+echo "--------------------------------"
39
 echo "     Checking system tools."
40
 echo "--------------------------------"
41
 
42
@@ -529,10 +530,10 @@
43
 
44
 echo "----------------------------------------"
45
 echo "     Checking system tools finished."
46
-echo -e "----------------------------------------\n"
47
-
48
+echo "----------------------------------------"
49
+echo ""
50
 echo "--------------------------------"
51
-echo "     Checking Ocaml compiler."
52
+echo "     Checking OCaml compiler."
53
 echo "--------------------------------"
54
 
55
 CONFIG_DIR=$SOURCE_DIR/config
56
@@ -557,7 +558,7 @@
57
 else
58
   OCAMLVERSION=`$OCAMLC -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
59
   case "$OCAMLVERSION" in
60
-    "$REQUIRED_OCAML"*|3.12.*|3.11.*|3.10.1*|3.10.2*) ;;
61
+    "$REQUIRED_OCAML"*|4.*|3.12.*|3.11.*|3.10.1*|3.10.2*) ;;
62
     *)
63
         echo "Need build"
64
         BUILD_OCAML=yes
65
@@ -575,18 +576,18 @@
66
 
67
   if [ test "$SYSTEM" = "mingw" ]; then
68
     echo "********         Objective-Caml $REQUIRED_OCAML is required               *********" 1>&2;
69
-    echo "********     no valid Ocaml compiler found on your system        *********" 1>&2;
70
+    echo "********     no valid OCaml compiler found on your system        *********" 1>&2;
71
     echo "********   on MinGW there is no possibility to let configure     *********" 1>&2;
72
-    echo "********   build the Ocaml compiler with the included script     *********" 1>&2;
73
+    echo "********   build the OCaml compiler with the included script     *********" 1>&2;
74
     echo "********    check http://mldonkey.sourceforge.net/Windows        *********" 1>&2;
75
-    echo "********   for instuctions how to compile Ocaml under MinGW      *********" 1>&2;
76
+    echo "********   for instuctions how to compile OCaml under MinGW      *********" 1>&2;
77
     exit 1
78
   else  
79
     
80
   echo "********  Objective-Caml $REQUIRED_OCAML is required  *********" 1>&2;
81
   if [ test "$WGET" = "" ] && [ test "$REQUIRED_OCAML" != "SVN" ]; then
82
     echo "********          wget is missing          *********" 1>&2;
83
-    echo "********       cannot download Ocaml       *********" 1>&2;
84
+    echo "********       cannot download OCaml       *********" 1>&2;
85
     exit 1
86
   fi
87
   echo "*******  Check http://caml.inria.fr/  ********" 1>&2;
88
@@ -614,7 +615,7 @@
89
           $WGET http://caml.inria.fr/pub/distrib/ocaml-3.10/ocaml-"$REQUIRED_OCAML".tar.gz
90
         fi
91
         if test ! -f ocaml-"$REQUIRED_OCAML".tar.gz; then
92
-          echo "********        download Ocaml $REQUIRED_OCAML not successful, try do download it manually       *********" 1>&2;
93
+          echo "********        download OCaml $REQUIRED_OCAML not successful, try do download it manually       *********" 1>&2;
94
           echo "********        from http://caml.inria.fr/pub/distrib/                                   *********" 1>&2;
95
           echo "********        and copy the tar.gz into $PATCH_DIR              *********" 1>&2;
96
           exit 1
97
@@ -654,7 +655,7 @@
98
         rm -rf ocaml-"$REQUIRED_OCAML"
99
       fi
100
       cd $CONFIG_DIR
101
-      echo Ocaml locally installed for mldonkey
102
+      echo OCaml locally installed for mldonkey
103
 
104
       if test -f "$LOCAL_OCAML"/ocamlc.opt; then
105
          OCAMLC=$LOCAL_OCAML/ocamlc.opt
106
@@ -664,7 +665,7 @@
107
          OCAMLC=$LOCAL_OCAML/ocamlc
108
          ac_cv_prog_OCAMLC=$LOCAL_OCAML/ocamlc
109
       else
110
-        echo "Ocaml installation failed"; exit 1
111
+        echo "OCaml installation failed"; exit 1
112
       fi
113
       fi
114
       ;;
115
@@ -725,9 +726,9 @@
116
   CAMLP4LIB_OPT="dynlink.cmxa $CAMLP4LIB_OPT"
117
 fi
118
 
119
-# force usage of supported Ocaml versions
120
+# force usage of supported OCaml versions
121
 case "$OCAMLVERSION" in
122
-    3.10.1*|3.10.2*|3.1*) ;;
123
+    3.10.1*|3.10.2*|3.1*|4.*) ;;
124
     *)
125
       if [ test "$REQUIRED_OCAML" != "SVN" ]; then
126
         echo "********  Version $REQUIRED_OCAML of Objective-Caml is required  *********" 1>&2;
127
@@ -754,7 +755,7 @@
128
 fi
129
 
130
 echo "-------------------------------------------"
131
-echo "     Checking Ocaml $OCAMLVERSION finished."
132
+echo "     Checking OCaml $OCAMLVERSION finished."
133
 echo "-------------------------------------------"
134
 
135
 
136
@@ -772,7 +773,8 @@
137
     OCAMLOPT="$OCAMLOPT -g"
138
 fi
139
 
140
-echo -e "\n----------------------------------"
141
+echo ""
142
+echo "----------------------------------"
143
 echo "     Checking system headers."
144
 echo "----------------------------------"
145
 
146
@@ -826,7 +828,8 @@
147
 ])
148
 echo "-------------------------------------------"
149
 echo "     Checking system headers finished."
150
-echo -e "-------------------------------------------\n"
151
+echo "-------------------------------------------"
152
+echo ""
153
 echo "-----------------------------------"
154
 echo "     Checking system libraries."
155
 echo "-----------------------------------"
156
@@ -850,30 +853,30 @@
157
 if test "$UPNP_NATPMP_FORCE" = "yes"; then
158
    UPNP_NATPMP=yes
159
    cd $PATCH_DIR
160
-   $WGET http://miniupnp.tuxfamily.org/files/miniupnpc-1.4.20100609.tar.gz
161
-   $WGET http://miniupnp.tuxfamily.org/files/libnatpmp-20100202.tar.gz
162
+   $WGET http://miniupnp.tuxfamily.org/files/miniupnpc-1.6.tar.gz
163
+   $WGET http://miniupnp.tuxfamily.org/files/libnatpmp-20110808.tar.gz
164
    mkdir -p $BUILD_DIR $LOCAL_DIR/usr/bin $LOCAL_DIR/usr/lib $LOCAL_DIR/usr/include/miniupnpc
165
    cd $BUILD_DIR
166
-   rm -rf libnatpmp-20100202 miniupnpc-1.4.20100609
167
-   tar -xzf $PATCH_DIR/miniupnpc-1.4.20100609.tar.gz
168
-   tar -xzf $PATCH_DIR/libnatpmp-20100202.tar.gz
169
-   cd $BUILD_DIR/libnatpmp-20100202
170
+   rm -rf libnatpmp-20110808 miniupnpc-1.6
171
+   tar -xzf $PATCH_DIR/miniupnpc-1.6.tar.gz
172
+   tar -xzf $PATCH_DIR/libnatpmp-20110808.tar.gz
173
+   cd $BUILD_DIR/libnatpmp-20110808
174
    make all install PREFIX=$LOCAL_DIR
175
-   cd $BUILD_DIR/miniupnpc-1.4.20100609
176
+   cd $BUILD_DIR/miniupnpc-1.6
177
    make all install PREFIX=$LOCAL_DIR
178
    cd $CONFIG_DIR
179
-   rm -rf $BUILD_DIR/libnatpmp-20100202 $BUILD_DIR/miniupnpc-1.4.20100609
180
+   rm -rf $BUILD_DIR/libnatpmp-20110808 $BUILD_DIR/miniupnpc-1.6
181
    CPPFLAGS="${CPPFLAGS} -I$LOCAL_DIR/usr/include"
182
    LDFLAGS="${LDFLAGS} -L$LOCAL_DIR/usr/lib"
183
 fi
184
 
185
 if test "$UPNP_NATPMP" = "yes"; then
186
-  echo "----- checking libminiupnpc >= 1.4.20100609 (optional)"
187
+  echo "----- checking libminiupnpc >= 1.6 (optional)"
188
   AC_CHECK_HEADERS(miniupnpc/miniupnpc.h,[AC_CHECK_LIB(miniupnpc,upnpDiscover,[UPNP_NATPMP=yes],[UPNP_NATPMP=no])],[UPNP_NATPMP=no])
189
 fi
190
 
191
 if test "$UPNP_NATPMP" = "yes"; then
192
-  echo "----- checking libnatpmp >= 20100202 (optional)"
193
+  echo "----- checking libnatpmp >= 20110808 (optional)"
194
   AC_CHECK_HEADERS(natpmp.h,[AC_CHECK_LIB(natpmp,initnatpmp,[UPNP_NATPMP=yes],[UPNP_NATPMP=no])],[UPNP_NATPMP=no])
195
 fi
196
 
197
@@ -1133,7 +1136,8 @@
198
 
199
 echo "---------------------------------------------"
200
 echo "     Checking system libraries finished."
201
-echo -e "---------------------------------------------\n"
202
+echo "---------------------------------------------"
203
+echo ""
204
 
205
 CXX_VERSION=
206
 CRYPTOPPFLAGS=
207
@@ -1572,17 +1576,20 @@
208
 
209
 cd ..
210
 
211
-echo -e "\nBuilding dependencies (if it blocks, try '$GNU_MAKE depend' to see the problem)"
212
+echo ""
213
+echo "Building dependencies (if it blocks, try '$GNU_MAKE depend' to see the problem)"
214
 $GNU_MAKE depend 2> /dev/null > /dev/null || echo "Building dependencies fails: try: '$GNU_MAKE depend'"
215
 
216
-echo -e -n "\nConfiguring MLDonkey" $MLDONKEY_VERSION
217
+echo ""
218
+printf "Configuring MLDonkey %s" "$MLDONKEY_VERSION"
219
 if test ! -z "$SCM_VERSION"; then
220
-  echo -n " - SCM: $SCM_VERSION"
221
+  printf " - SCM: %s" "$SCM_VERSION"
222
 fi
223
-echo " completed."
224
+ec " completed.\n"
225
 
226
-echo -e "\nNetwork modules:"
227
-echo -n " - eDonkey           "
228
+echo ""
229
+echo "Network modules:"
230
+printf " - eDonkey           "
231
 if test "$DONKEY" = "yes"; then
232
   if test "$DONKEY_SUI" = "yes"; then
233
     echo "enabled (eMule SUI enabled)"
234
@@ -1593,119 +1600,120 @@
235
   echo "        disabled"
236
 fi
237
 
238
-echo -n " - BitTorrent        "
239
+printf " - BitTorrent        "
240
 if test "$BITTORRENT" = "yes"; then
241
   echo "enabled"
242
 else
243
   echo "        disabled"
244
 fi
245
 
246
-echo -n " - FileTP (aka wget) "
247
+printf " - FileTP (aka wget) "
248
 if test "$FILETP" = "yes"; then
249
   echo "enabled"
250
 else
251
   echo "        disabled"
252
 fi
253
 
254
-echo -n " - Fasttrack         "
255
+printf " - Fasttrack         "
256
 if test "$FASTTRACK" = "yes"; then
257
   echo "enabled"
258
 else
259
   echo "        disabled"
260
 fi
261
 
262
-echo -n " - Gnutella          "
263
+printf " - Gnutella          "
264
 if test "$GNUTELLA" = "yes"; then
265
   echo "enabled (warning: this network module is unmaintained)"
266
 else
267
   echo "        disabled - unmaintained"
268
 fi
269
 
270
-echo -n " - Gnutella2         "
271
+printf " - Gnutella2         "
272
 if test "$GNUTELLA2" = "yes"; then
273
   echo "enabled (warning: this network module is unmaintained)"
274
 else
275
   echo "        disabled - unmaintained"
276
 fi
277
 
278
-echo -n " - Direct Connect    "
279
+printf " - Direct Connect    "
280
 if test "$DIRECT_CONNECT" = "yes"; then
281
   echo "enabled"
282
 else
283
   echo "        disabled"
284
 fi
285
 
286
-echo -n " - Open Napster      "
287
+printf " - Open Napster      "
288
 if test "$OPEN_NAPSTER" = "yes"; then
289
   echo "enabled          - currently not usable"
290
 else
291
   echo "        disabled - currently not usable"
292
 fi
293
 
294
-echo -n " - Soulseek          "
295
+printf " - Soulseek          "
296
 if test "$SOULSEEK" = "yes"; then
297
   echo "enabled          - currently not usable"
298
 else
299
   echo "        disabled - currently not usable"
300
 fi
301
 
302
-echo -n " - OpenFT            "
303
+printf " - OpenFT            "
304
 if test "$OPENFT" = "yes"; then
305
   echo "enabled          - currently not usable"
306
 else
307
   echo "        disabled - currently not usable"
308
 fi
309
 
310
-echo -e "\nCore features:"
311
+echo ""
312
+echo "Core features:"
313
 
314
 echo " - zlib (required)   enabled"
315
 
316
-echo -n " - threads           "
317
+printf " - threads           "
318
 if test "$USE_PTHREAD" = "yes"; then
319
   echo "enabled"
320
 else
321
   echo "        disabled"
322
 fi
323
 
324
-echo -n " - bzip2             "
325
+printf " - bzip2             "
326
 if test "$BZIP2" = "yes"; then
327
   echo "enabled"
328
 else
329
   echo "        disabled"
330
 fi
331
 
332
-echo -n " - iconv             "
333
+printf " - iconv             "
334
 if test "$ICONV" = "yes"; then
335
   echo "enabled"
336
 else
337
   echo "        disabled"
338
 fi
339
 
340
-echo -n " - libmagic          "
341
+printf " - libmagic          "
342
 if test "$MAGIC" = "yes"; then
343
   echo "enabled"
344
 else
345
   echo "        disabled"
346
 fi
347
 
348
-echo -n " - upnp & natpmp     "
349
+printf " - upnp & natpmp     "
350
 if test "$UPNP_NATPMP" = "yes"; then
351
   echo "enabled"
352
 else
353
   echo "        disabled"
354
 fi
355
 
356
-echo -n " - graphical stats   "
357
+printf " - graphical stats   "
358
 if test "$GD" = "yes"; then
359
   echo "enabled"
360
-  echo -n "   - png support     "
361
+  printf "   - png support     "
362
   if test "$GD_PNG" = "yes"; then
363
     echo "enabled"
364
   else
365
     echo "        disabled"
366
   fi
367
 
368
-  echo -n "   - jpg support     "
369
+  printf "   - jpg support     "
370
   if test "$GD_JPG" = "yes"; then
371
     echo "enabled"
372
   else
373
@@ -1716,7 +1724,8 @@
374
 fi
375
 
376
 if test "$LABLGTK_CONFIG" = "yes"; then
377
-  echo -n -e "\n - GUI support       "
378
+  echo ""
379
+  printf "\n - GUI support       "
380
   if test "$GUI" = "newgui1"; then
381
     echo "GTK1 newgui"
382
   else
383
@@ -1736,17 +1745,21 @@
384
   OCAML_TYPE="- byte code"
385
   COMPILE_TARGET=".byte"
386
 fi
387
-echo -e "\nCompilers:"
388
-echo -e " - Ocaml version     $OCAMLVERSION $OCAML_TYPE"
389
-echo -e " - $CC version       $CC_VERSION"
390
+echo ""
391
+printf "Compilers:"
392
+echo " - OCaml version     $OCAMLVERSION $OCAML_TYPE"
393
+echo " - $CC version       $CC_VERSION"
394
 if test "x$CXX" != "x"; then
395
-  echo -e " - $CXX version       $CXX_VERSION"
396
+  echo " - $CXX version       $CXX_VERSION"
397
 fi
398
-echo -e "\nNow execute '$GNU_MAKE' to start compiling. Good luck!"
399
+echo ""
400
+echo "\nNow execute '$GNU_MAKE' to start compiling. Good luck!"
401
 
402
-echo -e "\nTo compile a static code execute:     $GNU_MAKE mlnet$COMPILE_TARGET.static"
403
-echo      "To produce a release tarball execute: $GNU_MAKE release.mlnet.static"
404
-echo      "To clean the build directory execute: $GNU_MAKE maintainerclean"
405
+echo ""
406
+echo "To compile a static code execute:     $GNU_MAKE mlnet$COMPILE_TARGET.static"
407
+echo "To produce a release tarball execute: $GNU_MAKE release.mlnet.static"
408
+echo "To clean the build directory execute: $GNU_MAKE maintainerclean"
409
 if test "$DONKEY_SUI" = "yes"; then
410
-  echo -e "\nCompiling CryptoPP.cc can take several minutes, on slow machines up to half an hour."
411
+  echo ""
412
+  echo "Compiling CryptoPP.cc can take several minutes, on slow machines up to half an hour."
413
 fi
414
mldonkey-3.1.2.tar.bz2/distrib/ChangeLog -> mldonkey-3.1.3.tar.bz2/distrib/ChangeLog Changed
324
 
1
@@ -14,6 +14,31 @@
2
 ChangeLog
3
 =========
4
 
5
+2012/08/05: version 3.1.3 = tag release-3-1-3
6
+
7
+2012/07/27
8
+7756: BT: Add support for magnet links (ygrek, jave)
9
+
10
+2012/07/01
11
+7813: Fix segfault on Solaris/OpenIndiana in md4 code written in C (dcoppa)
12
+7812: FreeBSD: proper version identification (lioux)
13
+
14
+2012/06/24
15
+7805: Update upnp libraries
16
+7804: new option filenames_utf8 (ygrek)
17
+7803: pause conditions: "pause where priority < X" (ygrek)
18
+7802: Do not leave empty files if code generation fails (ygrek)
19
+7801: HTML: Fix content-type for 401 error (ygrek)
20
+7800: Improve error message visibility (ygrek)
21
+7799: HTML: fix validation errors (ygrek)
22
+7798: Fix Mac OS X compilation (ygrek)
23
+7797: allow build with upcoming OCaml 4.00 (ygrek)
24
+7795: spelling fix, official language name is "OCaml" (ygrek)
25
+7796: configure: fix non-portable use of echo (ygrek)
26
+
27
+2012/05/23
28
+7784: IP discover: Fix broken URL
29
+-------------------------------------------------------------------------------
30
 2012/05/13: version 3.1.2 = tag release-3-1-2 (expect no binary updates)
31
 7726: Add support for Debian/Hurd, really ;)
32
 
33
@@ -340,289 +365,6 @@
34
 6752: Optimized implementation of the ip_set module (cbah)
35
 6736: Add/fix some copyright texts
36
 -------------------------------------------------------------------------------
37
-2009/01/20: version 2.9.7 = tag release-2-9-7
38
-6727: Web_infos: Replace old GeoIP URL with new one
39
-- old code added the new URL, even if GeoIP was not present in web_infos
40
-
41
-2009/01/04
42
-6714: BT: Fix bug when computing limits for max_bt_uploaders
43
-6713: GeoIP: New web_infos URL for country list (thx to Choby)
44
-- old URLs are updated to:
45
-  http://www.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
46
-
47
-2008/12/13
48
-6689: Allow compilation with Ocaml 3.11.0
49
-
50
-2008/09/01
51
-6629: Mail: Move hostname from subject to body (eydaimon)
52
-Updated Mozilla protocol handler to version 2.5
53
-- original source from http://www.informatik.uni-oldenburg.de/~dyna/mldonkey
54
-6628: IP discover: Use http://whatismyip.org, old URL is not working anymore
55
--------------------------------------------------------------------------------
56
-2008/08/04: version 2.9.6 = tag release-2-9-6
57
-6599: Allow values lower than max_upload_slots for BT-max_bt_uploaders
58
-
59
-2008/07/29
60
-6593: CryptoPP performance fix for ARM (Marc Pignat)
61
-6592: HTML: Fix invalid html respond when login is invalid
62
-
63
-2008/07/17
64
-6571: Runinfo: Include DirectConnect in list of enabled nets
65
-
66
-2008/07/02
67
-6558: Fix text relocation warnings on hardened distributions (Davide Pesavento)
68
-6557: BT: Send correct downloaded value when download is stopped to tracker
69
-      (Fox Mulder)
70
--------------------------------------------------------------------------------
71
-2008/05/02: version 2.9.5 = tag release-2-9-5
72
-6503: Remove release status when download is finished
73
-
74
-2008/03/31
75
-6465: BT: Send correct downloaded value when download starts to tracker
76
-      (colchaodemola)
77
-6477: Use $MLDONKEY_DIR/mlnet_tmp instead of /tmp
78
-- This patch fixes problems with hash checking of multifile BT
79
-  downloads when /tmp is too small.
80
-- To override $MLDONKEY_DIR/mlnet_tmp use variable $MLDONKEY_TEMP.
81
-  This patch has nothing to do with option temp_directory.
82
-6472: Multiuser: Count only files in download queue for user/group statistics
83
-6471: Clean logfile
84
-6470: BT: Use default of max_upload_slots as minimum for BT-max_bt_uploaders
85
-      instead of hard-coded value
86
-
87
-2008/03/18
88
-6466: Fix option_hook loop when changing max_upload_slots < 3,
89
-      caused by patch #6451
90
-
91
-2008/03/14
92
-6462: Multiuser: Restrict chown to admin users only
93
-
94
-2008/03/11
95
-6458: Fix commit bug when filesystem reports negative values
96
-      for maximum filename length
97
-
98
-2008/03/07
99
-6451: BT: Implement minimum of 3 (like max_upload_slots)
100
-      for option max_bt_uploaders
101
--------------------------------------------------------------------------------
102
-2008/03/02: version 2.9.4 = tag release-2-9-4
103
-6440: GTK2 GUI: Compile with lablgtk-2.10.1 by default
104
-- lablgtk-2.10.0 does not compile with Ocaml 3.10.2
105
-
106
-2008/02/29
107
-6439: Configure: Make Ocaml 3.10.2 the default compiler
108
-
109
-2008/02/06
110
-6407: New options run_as_group/run_as_groupgid
111
-- works the same way as options run_as_user/run_as_useruid
112
-- display system user:group running MLDonkey core in runinfo
113
-6406: Mail: Fix bug in rfc2047 encoding
114
-
115
-2008/02/05
116
-6404: New option release_new_downloads
117
-- set to true to activate release slot feature for all newly started downloads
118
-
119
-2008/02/04
120
-6080: HTTP interface: new command/button "logout" (Schlumpf)
121
-6077: bw_toggle: support new option "max_opened_connections_2" (Schlumpf)
122
-6401: Swarmer: Correctly update file_downloaded during recover_temp (pango)
123
-6400: EDK: Correctly update filename after recover_temp
124
-6396: Log: Print user:group when starting a download
125
-6395: Makefile: Do not strip shared linked binaries on Mac OS X, clean Makefile
126
-
127
-2008/01/24
128
-6381: Multiuser: Block commands "shares" and "share" for non-admin users
129
--------------------------------------------------------------------------------
130
-2008/01/16: version 2.9.3 = tag release-2-9-3
131
-6379: bwstats: Show downloaded bytes (pango)
132
-
133
-2008/01/16
134
-6377: Configure: Make Ocaml 3.10.1 the default compiler
135
-- Ocaml 3.10.1 fixes crashes in MLDonkeys eDonkey module when compiled with
136
-  Ocaml 3.10.0 on 64bit systems
137
-
138
-2008/01/15
139
-6373: Swarmer: Ignore received data when file is queued
140
-
141
-2008/01/08
142
-6367: FileTP: Fix bug when starting downloads > 4GB via dllink
143
-
144
-2008/01/07
145
-6364: MinGW: Fix broken share priorities (thx to vbnuy6)
146
-6365: HTML: Use option max_name_len in upstats for unhashed files
147
-
148
-2008/01/04
149
-6362: Small Geoip updates
150
-- new countries + flags: Saint Barthelemy, Saint Martin
151
-- updates flags: Georgia, Democratic Republic of the Congo, Western Sahara, Lesotho
152
-
153
-2008/01/02
154
-6361: GUI: Send console messages to admin users after unsharing a file
155
-6349: DirectConnect: Correctly report total shared filesize to server (LuCasn)
156
-6360: BT: New command print_torrent <file_num>,
157
-      new link in HTML, upstats to display .torrent details
158
-
159
-2007/12/19
160
-6351: Allow compilation with upcoming Ocaml 3.10.1
161
-
162
-2007/12/17
163
-6342: HTML: fix broken vm output in Opera (schlumpf)
164
-6346: Environment variables for file_started_cmd (see option help text)
165
-
166
-2007/12/13
167
-6343: gcc-4.3 compile fix for CryptoPP (brian m. carlson)
168
-
169
-2007/12/09
170
-6337: Fix inequality test for option html_mods_theme (pango)
171
-
172
-2007/11/03
173
-6255: Fix compile warnings for GTK2 GUI and DC++ (pango)
174
--------------------------------------------------------------------------------
175
-2007/10/20: version 2.9.2 = tag release-2-9-2
176
-6242: Allow deactivation of [telnet|gui|gift]_port by setting it to 0
177
-
178
-2007/10/17
179
-6240: GTK1 oldgui: Hide password in server settings
180
-6239: Update GNU config.guess and config.sub to version 2007/07
181
-Updated Mozilla protocol handler to version 2.2
182
-- original source from http://www.informatik.uni-oldenburg.de/~dyna/mldonkey
183
-6238: Fix statvfs code on alpha platform (Alexander Kotelnikov)
184
-6237: EDK: Load server.met files from archives even if unpack fails
185
-- http://www.gruk.org/server.met.gz is not a gz archive at the moment...
186
-
187
-2007/10/10
188
-6231: Swarming: Propagate chunks of finished file before commit (pango)
189
-      to other downloading files
190
-
191
-2007/10/04
192
-6223: GTK2 GUI: Compile with lablgtk-2.10.0 by default
193
-- this patch changes the lablgtk2 version used by ./configure
194
-- self-compiled lablgtk-2.10.0 must be patched with patches/lablgtk-2.10.0.patch
195
-
196
-2007/09/30
197
-6221: Configure: Remove unneeded checks
198
-6220: GTK2 GUI: Fix compile bug due to changed API in lablgtk-2.10.0
199
-- GTK2 GUI still compiles with older versions of lablgtk2
200
-
201
-2007/09/13
202
-6197: Options backup: Better log messages, remove useless exception
203
--------------------------------------------------------------------------------
204
-2007/09/09: version 2.9.1 = tag release-2-9-1
205
-6192: EDK: Use discovered client_ip when lowid
206
-
207
-2007/09/05
208
-6187: BT: Fix wrong file order of multifile torrents due to patch #6174
209
-
210
-2007/09/01
211
-6179: BT: Send correct downloaded amount to tracker when download completed
212
-6174: BT: Encode non-UTF8 filenames using "encoding" or "codepage" data
213
-      from .torrent if present
214
-
215
-2007/08/31
216
-6175: Yet another patch for share_scan_interval
217
-- new default 30 minutes for newly created ini files
218
-- still use 0 to disable
219
-- hard-coded global minimum of 5 minutes, this updates old default 1 to 5
220
-- automated options update, if update is needed (options_version <= 19) and
221
-  share_scan_interval = 5 (because of new hard-coded minimum, which is
222
-  processed earlier) its changed to new default of 30
223
-6145: EDK: Update options description of max_connected_servers (Schlumpf)
224
-6172: EDK: properly advertise and honour noviewshared tag (TripleM)
225
-
226
-2007/08/23
227
-6160: BT: Another fix for share_scan_interval
228
-- Old hard-coded default was 300s, now with share_scan_interval its
229
-  possible to use a minimum of 60s which produces high CPU load.
230
-  This patch implements a minimum of 300s for the BT share_files timer.
231
-
232
-2007/08/04
233
-6128: New default for option messages_filter (unease)
234
-6132: HTML: Fix group display in vd <num> for admin users
235
-      view of other users files
236
-6130: Change API for network_parse_url, support user group
237
-6127: HTML: Display file_chunk_sizes/file_piece_size in vd <num>
238
-6135: BT: Fix high CPU load when share_scan_interval = 0
239
-      due to buggy patch #6049 (thx to darkman)
240
--------------------------------------------------------------------------------
241
-2007/07/27: version 2.9.0 = tag release-2-9-0
242
-6118: Configure: Update defaults
243
-- enable DirectConnect by default 
244
-- disable Gnutella & Gnutella2 by default
245
-  - MLDonkey does not support UDP host cache and contains
246
-    non-working GWebCache URLs
247
-  - Gnutella/G2 code has not been updated for several years,
248
-    its officially unmaintained for now
249
-  - remove non-existing GWebCache URLs
250
-
251
-2007/07/25
252
-6087: Fix logging of verbosity "bw", remove obsolete options
253
-6085: BT: Improve UTF8 support
254
-- parse field "encoding"
255
-- use field "name.utf8" instead of "name", if available
256
-
257
-2007/07/10
258
-5996: BT: Recognize more client types (orbit)
259
-6065: DirectConnect: Support dc++ hublist in web_infos
260
-6063: BT: Better detect single-file torrents
261
-
262
-2007/07/03
263
-6068: BT: Fix download start when torrents/downloads filesystem
264
-      allows more than 16M chars
265
-
266
-2007/07/01
267
-6064: BT: Earlier first scan of torrents/incoming/*
268
-6053: HTML: Send correct filename when previewing (chandlerding)
269
-6061: Options: New type port_option, values are bound to be >= 0 and <= 65535
270
-6060: Do not send mail notifications when smtp_server = ""
271
-6059: Multiuser: Avoid double group entries in user_groups
272
-6056: Log username, IP:port and old/new value when changing options
273
-
274
-2007/06/30
275
-6049: BT: Support user_commit_dir when seeding,
276
-      reshare every share_scan_interval minutes
277
-
278
-2007/06/26
279
-Move docs/multiuser.txt to distrib/multiuser.txt
280
-6048: Make Ocaml 3.10.0 the default compiler
281
-- MLDonkey can still be compiled with Ocaml 3.08.3/4 & 3.09.*
282
-- if you need GTK1 oldgui you must use Ocaml < 3.10.0 to compile
283
-
284
-2007/06/24
285
-6044: BT: Limit max_bt_uploaders to max_upload_slots (pango)
286
-6043: Discover WAN IP
287
-- new command "discover_ip" to force discovery
288
-- new option "discover_ip" to enable automatic discovery on startup
289
-  and after SIGHUP, default true
290
-- this patch is important for BT-only usage, without this patch the
291
-  WAN IP was discovered only by using EDK server replies
292
-6034: Load $MLDONKEY/web_infos/* before activating network modules
293
-- this fixes a security hole when networks started connecting
294
-  before IP blocklist was loaded
295
-6025: Extend command "links" to optionally display all downloading files
296
-- "links" displays all files, not only shared ones like before
297
-- "links shared" lists only shared files
298
-- "links downloading" lists only downloading files
299
-
300
-2007/06/18
301
-6024: Multiuser: New parameters for command useradd:
302
-      user_mail + user_max_concurrent_downloads
303
-
304
-2007/06/17
305
-6021: Remove leftovers from optional zlib support,
306
-      replace Autoconf.zlib__* with Zlib.* functions
307
-6005: Swarmer: Implement new download mechanism
308
-- its now possible to switch the order blocks are downloaded from random
309
-  (first and last block first, default) to linear
310
-- new command: download_order <file number> <random|linear>
311
-6017: Multiuser: New optional parameters group/commit_dir for command useradd
312
-6020: Multiuser: Fix handling of user "admin", its user_commit_dir was not
313
-      used when MLDonkey was not restarted between download start and commit
314
-6019: BT: Disable user_commit_dir for multifile torrents to fix seeding
315
-6011: BT: Send no_peer_id to trackers to save some bandwidth (berni)
316
-6010: Update syslog.ml to version 1.4
317
-5995: EDK: Better handle permission denied errors for shared/downloading files
318
-5992: BT/IP block: Fix country-based IP blocking
319
--------------------------------------------------------------------------------
320
-Split Changelog, all stuff older than 2.9.0 is now in docs/ChangeLog.old:
321
+Split Changelog, all stuff older than 3.0.0 is now in docs/ChangeLog.old:
322
 
323
 http://savannah.nongnu.org/cgi-bin/viewcvs/mldonkey/mldonkey/docs/ChangeLog.old?rev=HEAD&content-type=text/vnd.viewcvs-markup
324
mldonkey-3.1.2.tar.bz2/distrib/Install.txt -> mldonkey-3.1.3.tar.bz2/distrib/Install.txt Changed
19
 
1
@@ -57,7 +57,7 @@
2
 
3
 The configure script will download ocaml and lablgtk, compile and install them
4
 locally so that they can be used to compile mldonkey. Steps below can be skipped
5
-now. Be patient. Ocaml and lablgtk tools take a while to compile and install.
6
+now. Be patient. OCaml and lablgtk tools take a while to compile and install.
7
 
8
 Note: At least 70 M of free disk space is required on the partition where mldonkey
9
 is compiled.
10
@@ -100,7 +100,7 @@
11
 
12
     To build GTK1 newgui: ./configure --enable-gui=newgui1
13
     To build GTK1 oldgui: ./configure --enable-gui=oldgui
14
-      - note: oldgui does not compile with Ocaml >= 3.10
15
+      - note: oldgui does not compile with OCaml >= 3.10
16
     To build GTK2 GUI:    ./configure --enable-gui[=newgui2]
17
     lablgtk-1.2.7 and lablgtk-2.10.1 can both be installed at the same time.
18
 
19
mldonkey-3.1.2.tar.bz2/docs/ChangeLog.old -> mldonkey-3.1.3.tar.bz2/docs/ChangeLog.old Changed
296
 
1
@@ -4,9 +4,292 @@
2
 All numbers mentioned here can be found as patches on
3
 http://savannah.nongnu.org/patch/?group=mldonkey
4
 
5
-2009/10/23: spiralvoice
6
+2012/07/01: spiralvoice
7
 
8
-Split Changelog, all stuff newer than 2.8.7 is now in distrib/ChangeLog
9
+Split Changelog, all stuff newer than 2.9.7 is now in distrib/ChangeLog
10
+-------------------------------------------------------------------------------
11
+2009/01/20: version 2.9.7 = tag release-2-9-7
12
+6727: Web_infos: Replace old GeoIP URL with new one
13
+- old code added the new URL, even if GeoIP was not present in web_infos
14
+
15
+2009/01/04
16
+6714: BT: Fix bug when computing limits for max_bt_uploaders
17
+6713: GeoIP: New web_infos URL for country list (thx to Choby)
18
+- old URLs are updated to:
19
+  http://www.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
20
+
21
+2008/12/13
22
+6689: Allow compilation with Ocaml 3.11.0
23
+
24
+2008/09/01
25
+6629: Mail: Move hostname from subject to body (eydaimon)
26
+Updated Mozilla protocol handler to version 2.5
27
+- original source from http://www.informatik.uni-oldenburg.de/~dyna/mldonkey
28
+6628: IP discover: Use http://whatismyip.org, old URL is not working anymore
29
+-------------------------------------------------------------------------------
30
+2008/08/04: version 2.9.6 = tag release-2-9-6
31
+6599: Allow values lower than max_upload_slots for BT-max_bt_uploaders
32
+
33
+2008/07/29
34
+6593: CryptoPP performance fix for ARM (Marc Pignat)
35
+6592: HTML: Fix invalid html respond when login is invalid
36
+
37
+2008/07/17
38
+6571: Runinfo: Include DirectConnect in list of enabled nets
39
+
40
+2008/07/02
41
+6558: Fix text relocation warnings on hardened distributions (Davide Pesavento)
42
+6557: BT: Send correct downloaded value when download is stopped to tracker
43
+      (Fox Mulder)
44
+-------------------------------------------------------------------------------
45
+2008/05/02: version 2.9.5 = tag release-2-9-5
46
+6503: Remove release status when download is finished
47
+
48
+2008/03/31
49
+6465: BT: Send correct downloaded value when download starts to tracker
50
+      (colchaodemola)
51
+6477: Use $MLDONKEY_DIR/mlnet_tmp instead of /tmp
52
+- This patch fixes problems with hash checking of multifile BT
53
+  downloads when /tmp is too small.
54
+- To override $MLDONKEY_DIR/mlnet_tmp use variable $MLDONKEY_TEMP.
55
+  This patch has nothing to do with option temp_directory.
56
+6472: Multiuser: Count only files in download queue for user/group statistics
57
+6471: Clean logfile
58
+6470: BT: Use default of max_upload_slots as minimum for BT-max_bt_uploaders
59
+      instead of hard-coded value
60
+
61
+2008/03/18
62
+6466: Fix option_hook loop when changing max_upload_slots < 3,
63
+      caused by patch #6451
64
+
65
+2008/03/14
66
+6462: Multiuser: Restrict chown to admin users only
67
+
68
+2008/03/11
69
+6458: Fix commit bug when filesystem reports negative values
70
+      for maximum filename length
71
+
72
+2008/03/07
73
+6451: BT: Implement minimum of 3 (like max_upload_slots)
74
+      for option max_bt_uploaders
75
+-------------------------------------------------------------------------------
76
+2008/03/02: version 2.9.4 = tag release-2-9-4
77
+6440: GTK2 GUI: Compile with lablgtk-2.10.1 by default
78
+- lablgtk-2.10.0 does not compile with Ocaml 3.10.2
79
+
80
+2008/02/29
81
+6439: Configure: Make Ocaml 3.10.2 the default compiler
82
+
83
+2008/02/06
84
+6407: New options run_as_group/run_as_groupgid
85
+- works the same way as options run_as_user/run_as_useruid
86
+- display system user:group running MLDonkey core in runinfo
87
+6406: Mail: Fix bug in rfc2047 encoding
88
+
89
+2008/02/05
90
+6404: New option release_new_downloads
91
+- set to true to activate release slot feature for all newly started downloads
92
+
93
+2008/02/04
94
+6080: HTTP interface: new command/button "logout" (Schlumpf)
95
+6077: bw_toggle: support new option "max_opened_connections_2" (Schlumpf)
96
+6401: Swarmer: Correctly update file_downloaded during recover_temp (pango)
97
+6400: EDK: Correctly update filename after recover_temp
98
+6396: Log: Print user:group when starting a download
99
+6395: Makefile: Do not strip shared linked binaries on Mac OS X, clean Makefile
100
+
101
+2008/01/24
102
+6381: Multiuser: Block commands "shares" and "share" for non-admin users
103
+-------------------------------------------------------------------------------
104
+2008/01/16: version 2.9.3 = tag release-2-9-3
105
+6379: bwstats: Show downloaded bytes (pango)
106
+
107
+2008/01/16
108
+6377: Configure: Make Ocaml 3.10.1 the default compiler
109
+- Ocaml 3.10.1 fixes crashes in MLDonkeys eDonkey module when compiled with
110
+  Ocaml 3.10.0 on 64bit systems
111
+
112
+2008/01/15
113
+6373: Swarmer: Ignore received data when file is queued
114
+
115
+2008/01/08
116
+6367: FileTP: Fix bug when starting downloads > 4GB via dllink
117
+
118
+2008/01/07
119
+6364: MinGW: Fix broken share priorities (thx to vbnuy6)
120
+6365: HTML: Use option max_name_len in upstats for unhashed files
121
+
122
+2008/01/04
123
+6362: Small Geoip updates
124
+- new countries + flags: Saint Barthelemy, Saint Martin
125
+- updates flags: Georgia, Democratic Republic of the Congo, Western Sahara, Lesotho
126
+
127
+2008/01/02
128
+6361: GUI: Send console messages to admin users after unsharing a file
129
+6349: DirectConnect: Correctly report total shared filesize to server (LuCasn)
130
+6360: BT: New command print_torrent <file_num>,
131
+      new link in HTML, upstats to display .torrent details
132
+
133
+2007/12/19
134
+6351: Allow compilation with upcoming Ocaml 3.10.1
135
+
136
+2007/12/17
137
+6342: HTML: fix broken vm output in Opera (schlumpf)
138
+6346: Environment variables for file_started_cmd (see option help text)
139
+
140
+2007/12/13
141
+6343: gcc-4.3 compile fix for CryptoPP (brian m. carlson)
142
+
143
+2007/12/09
144
+6337: Fix inequality test for option html_mods_theme (pango)
145
+
146
+2007/11/03
147
+6255: Fix compile warnings for GTK2 GUI and DC++ (pango)
148
+-------------------------------------------------------------------------------
149
+2007/10/20: version 2.9.2 = tag release-2-9-2
150
+6242: Allow deactivation of [telnet|gui|gift]_port by setting it to 0
151
+
152
+2007/10/17
153
+6240: GTK1 oldgui: Hide password in server settings
154
+6239: Update GNU config.guess and config.sub to version 2007/07
155
+Updated Mozilla protocol handler to version 2.2
156
+- original source from http://www.informatik.uni-oldenburg.de/~dyna/mldonkey
157
+6238: Fix statvfs code on alpha platform (Alexander Kotelnikov)
158
+6237: EDK: Load server.met files from archives even if unpack fails
159
+- http://www.gruk.org/server.met.gz is not a gz archive at the moment...
160
+
161
+2007/10/10
162
+6231: Swarming: Propagate chunks of finished file before commit (pango)
163
+      to other downloading files
164
+
165
+2007/10/04
166
+6223: GTK2 GUI: Compile with lablgtk-2.10.0 by default
167
+- this patch changes the lablgtk2 version used by ./configure
168
+- self-compiled lablgtk-2.10.0 must be patched with patches/lablgtk-2.10.0.patch
169
+
170
+2007/09/30
171
+6221: Configure: Remove unneeded checks
172
+6220: GTK2 GUI: Fix compile bug due to changed API in lablgtk-2.10.0
173
+- GTK2 GUI still compiles with older versions of lablgtk2
174
+
175
+2007/09/13
176
+6197: Options backup: Better log messages, remove useless exception
177
+-------------------------------------------------------------------------------
178
+2007/09/09: version 2.9.1 = tag release-2-9-1
179
+6192: EDK: Use discovered client_ip when lowid
180
+
181
+2007/09/05
182
+6187: BT: Fix wrong file order of multifile torrents due to patch #6174
183
+
184
+2007/09/01
185
+6179: BT: Send correct downloaded amount to tracker when download completed
186
+6174: BT: Encode non-UTF8 filenames using "encoding" or "codepage" data
187
+      from .torrent if present
188
+
189
+2007/08/31
190
+6175: Yet another patch for share_scan_interval
191
+- new default 30 minutes for newly created ini files
192
+- still use 0 to disable
193
+- hard-coded global minimum of 5 minutes, this updates old default 1 to 5
194
+- automated options update, if update is needed (options_version <= 19) and
195
+  share_scan_interval = 5 (because of new hard-coded minimum, which is
196
+  processed earlier) its changed to new default of 30
197
+6145: EDK: Update options description of max_connected_servers (Schlumpf)
198
+6172: EDK: properly advertise and honour noviewshared tag (TripleM)
199
+
200
+2007/08/23
201
+6160: BT: Another fix for share_scan_interval
202
+- Old hard-coded default was 300s, now with share_scan_interval its
203
+  possible to use a minimum of 60s which produces high CPU load.
204
+  This patch implements a minimum of 300s for the BT share_files timer.
205
+
206
+2007/08/04
207
+6128: New default for option messages_filter (unease)
208
+6132: HTML: Fix group display in vd <num> for admin users
209
+      view of other users files
210
+6130: Change API for network_parse_url, support user group
211
+6127: HTML: Display file_chunk_sizes/file_piece_size in vd <num>
212
+6135: BT: Fix high CPU load when share_scan_interval = 0
213
+      due to buggy patch #6049 (thx to darkman)
214
+-------------------------------------------------------------------------------
215
+2007/07/27: version 2.9.0 = tag release-2-9-0
216
+6118: Configure: Update defaults
217
+- enable DirectConnect by default 
218
+- disable Gnutella & Gnutella2 by default
219
+  - MLDonkey does not support UDP host cache and contains
220
+    non-working GWebCache URLs
221
+  - Gnutella/G2 code has not been updated for several years,
222
+    its officially unmaintained for now
223
+  - remove non-existing GWebCache URLs
224
+
225
+2007/07/25
226
+6087: Fix logging of verbosity "bw", remove obsolete options
227
+6085: BT: Improve UTF8 support
228
+- parse field "encoding"
229
+- use field "name.utf8" instead of "name", if available
230
+
231
+2007/07/10
232
+5996: BT: Recognize more client types (orbit)
233
+6065: DirectConnect: Support dc++ hublist in web_infos
234
+6063: BT: Better detect single-file torrents
235
+
236
+2007/07/03
237
+6068: BT: Fix download start when torrents/downloads filesystem
238
+      allows more than 16M chars
239
+
240
+2007/07/01
241
+6064: BT: Earlier first scan of torrents/incoming/*
242
+6053: HTML: Send correct filename when previewing (chandlerding)
243
+6061: Options: New type port_option, values are bound to be >= 0 and <= 65535
244
+6060: Do not send mail notifications when smtp_server = ""
245
+6059: Multiuser: Avoid double group entries in user_groups
246
+6056: Log username, IP:port and old/new value when changing options
247
+
248
+2007/06/30
249
+6049: BT: Support user_commit_dir when seeding,
250
+      reshare every share_scan_interval minutes
251
+
252
+2007/06/26
253
+Move docs/multiuser.txt to distrib/multiuser.txt
254
+6048: Make Ocaml 3.10.0 the default compiler
255
+- MLDonkey can still be compiled with Ocaml 3.08.3/4 & 3.09.*
256
+- if you need GTK1 oldgui you must use Ocaml < 3.10.0 to compile
257
+
258
+2007/06/24
259
+6044: BT: Limit max_bt_uploaders to max_upload_slots (pango)
260
+6043: Discover WAN IP
261
+- new command "discover_ip" to force discovery
262
+- new option "discover_ip" to enable automatic discovery on startup
263
+  and after SIGHUP, default true
264
+- this patch is important for BT-only usage, without this patch the
265
+  WAN IP was discovered only by using EDK server replies
266
+6034: Load $MLDONKEY/web_infos/* before activating network modules
267
+- this fixes a security hole when networks started connecting
268
+  before IP blocklist was loaded
269
+6025: Extend command "links" to optionally display all downloading files
270
+- "links" displays all files, not only shared ones like before
271
+- "links shared" lists only shared files
272
+- "links downloading" lists only downloading files
273
+
274
+2007/06/18
275
+6024: Multiuser: New parameters for command useradd:
276
+      user_mail + user_max_concurrent_downloads
277
+
278
+2007/06/17
279
+6021: Remove leftovers from optional zlib support,
280
+      replace Autoconf.zlib__* with Zlib.* functions
281
+6005: Swarmer: Implement new download mechanism
282
+- its now possible to switch the order blocks are downloaded from random
283
+  (first and last block first, default) to linear
284
+- new command: download_order <file number> <random|linear>
285
+6017: Multiuser: New optional parameters group/commit_dir for command useradd
286
+6020: Multiuser: Fix handling of user "admin", its user_commit_dir was not
287
+      used when MLDonkey was not restarted between download start and commit
288
+6019: BT: Disable user_commit_dir for multifile torrents to fix seeding
289
+6011: BT: Send no_peer_id to trackers to save some bandwidth (berni)
290
+6010: Update syslog.ml to version 1.4
291
+5995: EDK: Better handle permission denied errors for shared/downloading files
292
+5992: BT/IP block: Fix country-based IP blocking
293
 -------------------------------------------------------------------------------
294
 2007/06/03: version 2.8.7 = tag release-2-8-7
295
 5988: BT: Completely parse handshake packet of newer BT clients (thx to Berni)
296
mldonkey-3.1.2.tar.bz2/src/daemon/common/commonGlobals.ml -> mldonkey-3.1.3.tar.bz2/src/daemon/common/commonGlobals.ml Changed
10
 
1
@@ -836,7 +836,7 @@
2
       if !verbose then lprintf_nl "started IP discovery";
3
       let module H = Http_client in
4
       let r = { H.basic_request with
5
-        H.req_url = Url.of_string "http://whatismyip.org/";
6
+        H.req_url = Url.of_string "http://automation.whatismyip.com/n09230945.asp";
7
         H.req_proxy = !CommonOptions.http_proxy;
8
         H.req_max_retry = 10;
9
         H.req_user_agent = get_user_agent () }
10
mldonkey-3.1.2.tar.bz2/src/daemon/common/commonInteractive.ml -> mldonkey-3.1.3.tar.bz2/src/daemon/common/commonInteractive.ml Changed
14
 
1
@@ -84,10 +84,10 @@
2
         Charset.add_uchar buf uc'
3
       end
4
   done;
5
-  if not Autoconf.windows then
6
+  if not Autoconf.windows && not !!filenames_utf8 then
7
     Charset.Locale.to_locale (Buffer.contents buf)
8
   else
9
-    Buffer.contents buf (* Windows uses patched Ocaml which always uses Unicode chars *)
10
+    Buffer.contents buf (* Windows uses patched OCaml which always uses Unicode chars *)
11
 
12
 let last_sent_dir_warning = Hashtbl.create 10
13
 
14
mldonkey-3.1.2.tar.bz2/src/daemon/common/commonMessages.ml -> mldonkey-3.1.3.tar.bz2/src/daemon/common/commonMessages.ml Changed
26
 
1
@@ -1006,10 +1006,10 @@
2
 onMouseOver=\"mOvr(this,'mOvr1');\" onMouseOut=\"mOut(this);\"
3
 onclick=\"dllink();\">" ^ _s
4
 "DL" ^ "</TD></TR></TBODY></TABLE></TD>
5
-<TD noWrap width=100% title=\\\" " ^ _s "Input mldonkey commands here" ^ " \\\">
6
+<TD noWrap width=\"100%\" title=\" " ^ _s "Input mldonkey commands here" ^ " \">
7
 <TABLE cellSpacing=0 cellpadding=0 width=\"100%\"><TBODY><TR>
8
 <TD style=\"height: 1%; padding: 0px; border: 0px; padding-left: 5px;\" title=\" " ^ _s "Input mldonkey command here" ^ " \">
9
-<INPUT class=\"txt2\" style=\"WIDTH: 99%;\" name=q><body onload=\"document.cmdFormular.q.focus();\">
10
+<INPUT class=\"txt2\" style=\"WIDTH: 99%;\" name=q>
11
 </TD></TR></TBODY></TABLE></TD><TD noWrap>
12
 <TABLE class=commands cellSpacing=0 cellPadding=0 width=\"100%\"><TBODY><TR>
13
 <TD class=\"bu bbigm\" style=\"padding-top: 0px; padding-bottom: 0px;\" title=\" " ^ _s "Input Command" ^ " \">
14
@@ -1019,6 +1019,11 @@
15
 </TR></TABLE>
16
 <!-- End Main Table -->
17
 
18
+<!-- set focus -->
19
+<script type=\"text/javascript\">
20
+document.forms['cmdFormular'].elements['q'].focus();
21
+</script>
22
+
23
 <DIV ID=\"tab1\" style=\"display: none\">
24
 <TABLE class=commands cellSpacing=0 cellPadding=0 width=\"100%\">
25
 <TBODY><TR>
26
mldonkey-3.1.2.tar.bz2/src/daemon/common/commonOptions.ml -> mldonkey-3.1.3.tar.bz2/src/daemon/common/commonOptions.ml Changed
13
 
1
@@ -1396,8 +1396,9 @@
2
   "Name of GUI to start"
3
     string_option (Filename.concat bin_dir "mlgui")
4
 
5
-
6
-
7
+let filenames_utf8 = define_option current_section ["filenames_utf8"]
8
+  "Use UTF-8 for filenames (instead of automatic locale detection)."
9
+    bool_option false
10
 
11
 (*************************************************************************)
12
 (*                                                                       *)
13
mldonkey-3.1.2.tar.bz2/src/daemon/common/commonTypes.ml -> mldonkey-3.1.3.tar.bz2/src/daemon/common/commonTypes.ml Changed
44
 
1
@@ -116,8 +116,9 @@
2
   | "ttr" -> TigerTree (TigerTree.of_string rem)
3
   | "md5" ->  Md5 (Md5.of_string rem)
4
   | "sig2dat" -> Md5Ext (Md5Ext.of_base32 rem)
5
-  | "bt" | "bittorrent" | "btih" -> 
6
-      BTUrl (Sha1.of_string rem)
7
+  | "bt" | "btih" ->
8
+    (* accept both base32 (32 chars) and base16 (40 chars) *)
9
+    BTUrl (if String.length rem = 40 then Sha1.of_hexa rem else Sha1.of_string rem)
10
   | "filetp" -> FileTP (Md4.of_string rem)
11
   | _ -> raise (Illegal_urn (s ^ " at " ^ sign ^ " is not known"))
12
 
13
@@ -211,6 +212,7 @@
14
     let uids = ref [] in
15
     let name = ref "" in
16
     let size = ref None in
17
+    let trackers = ref [] in
18
     let each k v =
19
       match String2.split k '.' with
20
       | "xt"::_ -> uids := Uid.of_string v :: !uids
21
@@ -220,7 +222,7 @@
22
       | "xs"::_ -> () (* eXtra source *)
23
       | "mt"::_ -> () (* manifest topic: url or urn, see http://rakjar.de/gnuticles/MAGMA-Specsv22.txt *)
24
       | "kt"::_ -> () (* keywords topic *)
25
-      | "tr"::_ -> () (* BT tracker *)
26
+      | "tr"::_ -> trackers := Url.decode v :: !trackers
27
       | "x"::_ -> () (* extensions *)
28
 (*
29
       | _ when v = "" ->
30
@@ -234,7 +236,12 @@
31
       try each k v
32
       with exn -> lprintf_nl "MAGNET: field %S=%S, exn %s" k v (Printexc2.to_string exn)
33
     ) url.Url.args;
34
-    object method name = !name method size = !size method uids = List.map Uid.to_uid (Uid.expand !uids) end
35
+    object
36
+      method name = !name
37
+      method size = !size
38
+      method uids = List.map Uid.to_uid (Uid.expand !uids)
39
+      method trackers = !trackers
40
+    end
41
   else 
42
     raise Not_found
43
 
44
mldonkey-3.1.2.tar.bz2/src/daemon/driver/driverCommands.ml -> mldonkey-3.1.3.tar.bz2/src/daemon/driver/driverCommands.ml Changed
45
 
1
@@ -2088,6 +2088,7 @@
2
                       [
3
            strings_of_option previewer;
4
            strings_of_option temp_directory;
5
+           strings_of_option filenames_utf8;
6
            strings_of_option share_scan_interval;
7
            strings_of_option hdd_temp_minfree;
8
            strings_of_option hdd_temp_stop_core;
9
@@ -3136,18 +3137,23 @@
10
     ), "<num> :\t\t\tverify chunks of file <num>";
11
 
12
     "pause", Arg_multiple (fun args o ->
13
-        if args = ["all"] && user2_is_admin o.conn_user.ui_user then
14
-          List.iter (fun file ->
15
-              file_pause file (admin_user ())
16
-          ) !!files
17
-        else
18
-          List.iter (fun num ->
19
-              let num = int_of_string num in
20
-              List.iter (fun file ->
21
-                  if (as_file_impl file).impl_file_num = num then
22
-                      file_pause file o.conn_user.ui_user
23
-              ) !!files) args; ""
24
-    ), "<num|all> :\t\t\tpause a download (use arg 'all' for all files)";
25
+      let filter = 
26
+        match args with (* TODO richer condition language *)
27
+        | ["where";"priority";(">"|"<" as op);n] ->
28
+          let n = int_of_string n in
29
+          let op = if op = ">" then (>) else (<) in
30
+          (fun file -> op (file_priority file) n)
31
+        | ["all"] -> (fun _ -> true)
32
+        | l ->
33
+          let l = List.map int_of_string l in
34
+          (fun file -> List.mem (file_num file) l)
35
+      in
36
+      List.iter begin fun file ->
37
+        if filter file then
38
+          file_pause file o.conn_user.ui_user
39
+      end !!files;
40
+      ""
41
+    ), "<num|all|where priority < prio> :\t\t\tpause a download (use arg 'all' for all files)";
42
 
43
     resume_alias "resume";
44
     resume_alias "unpause";
45
mldonkey-3.1.2.tar.bz2/src/daemon/driver/driverControlers.ml -> mldonkey-3.1.3.tar.bz2/src/daemon/driver/driverControlers.ml Changed
43
 
1
@@ -963,15 +963,14 @@
2
   let user = if r.options.login = "" then (admin_user ()).CommonTypes.user_name else r.options.login in
3
   if not (valid_password user r.options.passwd) || (r.get_url.Url.short_file = "logout") then begin
4
       clear_page buf;
5
-      http_file_type := TXT;
6
-      let _, error_text_long, header = Http_server.error_page "401" "" ""
7
+      http_file_type := HTM;
8
+      let _, error_text_long, head = Http_server.error_page "401" "" ""
9
    (Ip.to_string (TcpBufferedSocket.my_ip r.sock))
10
    (string_of_int !!http_port) None in
11
       Buffer.add_string buf error_text_long;
12
-      r.reply_head <- header;
13
-      r.reply_headers <- [
14
-        "Connection", "close";
15
-        "WWW-Authenticate", Printf.sprintf "Basic realm=\"%s\"" !!http_realm]
16
+      r.reply_head <- head;
17
+      http_add_html_header r;
18
+      add_reply_header r "WWW-Authenticate" (Printf.sprintf "Basic realm=\"%s\"" !!http_realm);
19
     end
20
   else
21
     begin
22
@@ -1520,14 +1519,17 @@
23
         | s ->  http_send_bin_pictures r buf (String.lowercase s)
24
       with
25
       | Not_found ->
26
-     let _, error_text_long, header = Http_server.error_page "404" "" ""
27
+     let _, error_text_long, head = Http_server.error_page "404" "" ""
28
            (Ip.to_string (TcpBufferedSocket.my_ip r.sock))
29
            (string_of_int !!http_port)
30
            (Some (Url_not_found r.get_url.Url.full_file)) in
31
-     r.reply_head <- header;
32
+     r.reply_head <- head;
33
+          http_add_html_header r;
34
      Buffer.add_string buf error_text_long
35
       | e ->
36
-          Printf.bprintf buf "\nException %s\n" (Printexc2.to_string e);
37
+          http_add_text_header r TEXTS;
38
+          Printf.bprintf buf "%sException %s\n"
39
+            (if Buffer.length buf = 0 then "" else "\n") (Printexc2.to_string e);
40
           r.reply_stream <- None
41
     end;
42
 
43
mldonkey-3.1.2.tar.bz2/src/daemon/driver/driverInteractive.ml -> mldonkey-3.1.3.tar.bz2/src/daemon/driver/driverInteractive.ml Changed
10
 
1
@@ -1878,7 +1878,7 @@
2
     );
3
   tack list 
4
     (
5
-      "Ocaml version:\t", 
6
+      "OCaml version:\t", 
7
       Sys.ocaml_version ^ 
8
       " - C compiler version: " ^ Autoconf.cc_version ^
9
       (if Autoconf.cxx_version <> "" then 
10
mldonkey-3.1.2.tar.bz2/src/gtk/gui/gui_keys.ml -> mldonkey-3.1.3.tar.bz2/src/gtk/gui/gui_keys.ml Changed
9
 
1
@@ -1,6 +1,6 @@
2
 (***********************************************************************)
3
 (*                                                                     *)
4
-(*                           xlib for Ocaml                            *)
5
+(*                           xlib for OCaml                            *)
6
 (*                                                                     *)
7
 (*       Fabrice Le Fessant, projet Para/SOR, INRIA Rocquencourt       *)
8
 (*                                                                     *)
9
mldonkey-3.1.2.tar.bz2/src/gtk/newgui/gui_keys.ml -> mldonkey-3.1.3.tar.bz2/src/gtk/newgui/gui_keys.ml Changed
9
 
1
@@ -1,6 +1,6 @@
2
 (***********************************************************************)
3
 (*                                                                     *)
4
-(*                           xlib for Ocaml                            *)
5
+(*                           xlib for OCaml                            *)
6
 (*                                                                     *)
7
 (*       Fabrice Le Fessant, projet Para/SOR, INRIA Rocquencourt       *)
8
 (*                                                                     *)
9
mldonkey-3.1.2.tar.bz2/src/networks/bittorrent/bTClients.ml -> mldonkey-3.1.3.tar.bz2/src/networks/bittorrent/bTClients.ml Changed
263
 
1
@@ -540,6 +540,7 @@
2
 let reserved () =
3
   let s = String.make 8 '\x00' in
4
   s.[7] <- (match !bt_dht with None -> '\x00' | Some _ -> '\x01');
5
+  s.[5] <- '\x10'; (* TODO bep9, bep10, notify clients about extended*)
6
   s
7
 
8
 (** handshake *)
9
@@ -569,6 +570,7 @@
10
 *)
11
 
12
 let send_bitfield c =
13
+  if not c.client_file.file_metadata_downloading then
14
   send_client c (BitField
15
       (
16
       match c.client_file.file_swarmer with
17
@@ -607,6 +609,21 @@
18
 
19
   c.client_azureus_messaging_protocol <- has_bit 0 0x80
20
 
21
+let send_extended_handshake c file =
22
+  let module B = Bencode in
23
+  let msg = (B.encode (B.Dictionary [(* "e",B.Int 0L; *)
24
+                                     "m", (B.Dictionary ["ut_metadata", B.Int 1L]);
25
+                                     (* "metadata_size", B.Int (-1L) *)])) in begin
26
+    send_client c (Extended (Int64.to_int 0L, msg));
27
+  end
28
+
29
+let send_extended_piece_request c piece file =
30
+  let module B = Bencode in
31
+  let msg = (B.encode (B.Dictionary ["msg_type", B.Int 0L; (* 0 is request subtype*)
32
+                                     "piece", B.Int piece; ])) in begin
33
+    send_client c (Extended (Int64.to_int c.client_ut_metadata_msg, msg));
34
+  end
35
+
36
 let show_client c =
37
   let (ip,port) = c.client_host in
38
   Printf.sprintf "%s:%d %S" (Ip.to_string ip) port (brand_to_string c.client_brand)
39
@@ -705,6 +722,7 @@
40
       begin
41
         c.client_incoming <- true;
42
         send_init !!client_uid file_id sock;
43
+        send_extended_handshake c file;
44
       end;
45
     connection_ok c.client_connection_control;
46
     if !verbose_msg_clients then
47
@@ -977,7 +995,7 @@
48
       (int_of_float timeout)
49
       (int_of_float next)
50
       (TcpMessages.to_string msg);
51
-    end;
52
+  end;
53
 
54
   let file = c.client_file in
55
 
56
@@ -1079,12 +1097,15 @@
57
 
58
     | BitField p ->
59
         (*A bitfield is a summary of what a client have*)
60
+      if !verbose_msg_clients then
61
+        lprintf_file_nl (as_file file) "Bitfield message,  metadata state %B" c.client_file.file_metadata_downloading;
62
+      if not c.client_file.file_metadata_downloading then
63
         begin
64
           match c.client_file.file_swarmer with
65
             None -> ()
66
           | Some swarmer ->
67
               c.client_new_chunks <- [];
68
-              
69
+
70
               let npieces = CommonSwarming.partition_size swarmer in
71
               let nbits = String.length p * 8 in
72
 
73
@@ -1125,6 +1146,7 @@
74
 
75
     | Have n ->
76
         (* A client can send a "Have" without sending a Bitfield *)
77
+        if not c.client_file.file_metadata_downloading then
78
         begin
79
           match c.client_file.file_swarmer with
80
             None -> ()
81
@@ -1247,6 +1269,172 @@
82
           if !verbose_msg_clients then
83
             lprintf_file_nl (as_file file) "Error: received cancel request but client has no slot"
84
 
85
+    | Extended (extmsg, payload) ->
86
+      (* extmsg: 0 handshake, N other message previously declared in handshake.
87
+         atm ignore extended messages if were not currently in metadata state.
88
+         TODO when were not in metadata state we should be friendly and answer metadata requests
89
+      *)
90
+      let module B = Bencode in
91
+      if file.file_metadata_downloading then begin
92
+        (* since we got at least one extended handshake from the peer, it should be okay to
93
+           send a handshake back now. we need to send it so the remote client knows how
94
+           to send us messages back.
95
+           this should of course be moved but I dont know where yet.
96
+           also we shouldnt send more than one handshake of course...
97
+        *)
98
+        if !verbose_msg_clients then
99
+          lprintf_file_nl (as_file file) "Got extended msg: %d %s" extmsg (String.escaped payload);
100
+
101
+        match extmsg with
102
+            0x0 ->
103
+            if !verbose_msg_clients then
104
+              lprintf_file_nl (as_file file) "Got extended handshake";
105
+            let dict = Bencode.decode payload in begin
106
+              match dict with
107
+                  B.Dictionary list ->
108
+                    List.iter (fun (key,value) ->
109
+                      match key, value with
110
+                        | "metadata_size", B.Int n ->
111
+                            if !verbose_msg_clients then
112
+                              lprintf_file_nl (as_file file) "Got metadata size %Ld" n;
113
+                            c.client_file.file_metadata_size <- n;
114
+                        | "m", B.Dictionary  mdict ->
115
+                          if !verbose_msg_clients then
116
+                            lprintf_file_nl (as_file file) "Got meta dict";
117
+                          List.iter (fun (key,value) ->
118
+                            match key, value with
119
+                                "ut_metadata", B.Int n ->
120
+                                  if !verbose_msg_clients then
121
+                                    lprintf_file_nl (as_file file) "ut_metadata is %Ld " n;
122
+                                  c.client_ut_metadata_msg <- n;
123
+                              | _ -> ();
124
+                          ) mdict;
125
+
126
+                        | _ -> () ;
127
+                    ) list;
128
+                    (* okay so now we know what to ask for, so ask for metadata now
129
+                       since metadata can be larger than 16k which is the limit, the transfer needs to be chunked, so
130
+                       it is not really right to make the query here. but its a start.
131
+                       also im just asking for piece 0.
132
+                       (we should also check that we actually got the metadata info before proceeding)
133
+                    *)
134
+                    send_extended_handshake c file;
135
+                    send_extended_piece_request c c.client_file.file_metadata_piece file;
136
+                  |_ -> () ;
137
+            end;
138
+          | 0x01 -> (* ut_metadata is 1 because we asked it to be 1 in the handshake
139
+                       the msg_type is probably
140
+                       1 for data,
141
+                       but could be 0 for request(unlikely since we didnt advertise we had the meta)
142
+                       2 for reject, also unlikely since peers shouldnt advertise if they dont have(but will need handling in the end)
143
+
144
+                       {'msg_type': 1, 'piece': 0, 'total_size': 3425}
145
+                       after the dict comes the actual piece
146
+                    *)
147
+            if !verbose_msg_clients then
148
+              lprintf_file_nl (as_file file) "Got extended ut_metadata message";
149
+            let msgtype = ref 0L in begin
150
+              begin
151
+                match B.decode payload with
152
+                    B.Dictionary list ->
153
+                      List.iter (fun (key,value) ->
154
+                        match key, value with
155
+                            "msg_type", B.Int n ->
156
+                              if !verbose_msg_clients then
157
+                                lprintf_file_nl (as_file file) "msg_type %Ld" n;
158
+                              msgtype := n;
159
+                          | "piece", B.Int n ->
160
+                            if !verbose_msg_clients then
161
+                              lprintf_file_nl (as_file file) "piece %Ld" n;
162
+                            file.file_metadata_piece <- n;
163
+                          | "total_size", B.Int n ->
164
+                             if !verbose_msg_clients then
165
+                              lprintf_file_nl (as_file file) "total_size %Ld" n; (* should always be the same as received in the initial handshake i suppose *)
166
+                          |_ -> () ;
167
+                      ) list;
168
+                  |_ -> () ;
169
+              end;
170
+              match !msgtype with
171
+                  1L ->
172
+                    let last_piece_index = (Int64.div file.file_metadata_size 16384L) in
173
+                    if !verbose_msg_clients then
174
+                      lprintf_file_nl (as_file file) "handling metadata piece %Ld of %Ld"
175
+                        file.file_metadata_piece
176
+                        last_piece_index;
177
+                        (* store the metadata piece in memory *)
178
+                    file.file_metadata_chunks.(1 + (Int64.to_int file.file_metadata_piece)) <- payload;
179
+                        (* possibly write metadata to disk *)
180
+                    if file.file_metadata_piece >=
181
+                      (Int64.div file.file_metadata_size 16384L) then begin
182
+                        if !verbose_msg_clients then
183
+                          lprintf_file_nl (as_file file) "this was the last piece";
184
+                            (* here we should simply delete the current download, and wait for mld to pick up the new torrent file *)
185
+                            (* the entire payload is currently in the array, TODO *)
186
+                        let newtorrentfile = (Printf.sprintf "%s/BT-%s.torrent"
187
+                                                      (Filename2.temp_dir_name ())
188
+                                                      (Sha1.to_string file.file_id)) in
189
+                        let fd = Unix32.create_rw  newtorrentfile  in
190
+                        let fileindex = ref 0L in
191
+                        begin
192
+                          (* the ee is so we can use the same method to find the
193
+                             start of the payload for the real payloads as well as the synthetic ones
194
+                             *)
195
+                          file.file_metadata_chunks.(0) <- "eed4:info";
196
+                          file.file_metadata_chunks.(2 + Int64.to_int last_piece_index) <- "eee";
197
+                          try
198
+                            Array.iteri (fun index chunk ->
199
+                            (* regexp ee is a fugly way to find the end of the 1st dict before the real payload *)
200
+                              let metaindex = (2 + (Str.search_forward  (Str.regexp_string "ee") chunk 0 )) in
201
+                              let chunklength = ((String.length chunk) - metaindex) in
202
+                              Unix32.write fd !fileindex chunk
203
+                                metaindex
204
+                                chunklength;
205
+                              fileindex := Int64.add !fileindex  (Int64.of_int chunklength);
206
+                              ();
207
+                            ) file.file_metadata_chunks;
208
+                          with e -> begin
209
+                            (* TODO ignoring errors for now, the array isnt really set up right anyway yet *)
210
+                            (*
211
+                            lprintf_file_nl (as_file file) "Error %s saving metadata"
212
+                              (Printexc2.to_string e)
213
+                            *) ()
214
+                          end;
215
+                          (* Yay, now the new torrent is on disk! amazing! However, now we need to kill the dummy torrent
216
+                             and restart it with the fresh real torrent *)
217
+
218
+                          (* it seems we need to use the dynamic interface... *)
219
+                          if !verbose then
220
+                            lprintf_file_nl (as_file file) "cancelling metadata download ";
221
+                          let owner = file.file_file.impl_file_owner in
222
+                          let group = file.file_file.impl_file_group in begin
223
+                            CommonInteractive.file_cancel (as_file file) owner ;
224
+                            (* hack_op_file_cancel c.client_file;   *)
225
+                            if !verbose then
226
+                              lprintf_file_nl (as_file file) "starting download from metadata torrent %s" newtorrentfile  ;
227
+                            ignore(CommonNetwork.network_parse_url BTGlobals.network newtorrentfile owner group);
228
+                          end;
229
+                          (try Sys.remove newtorrentfile with _ -> ())
230
+                        end;
231
+
232
+                      end
233
+                    else begin
234
+                          (* now ask for the next metadata piece, if any *)
235
+                      let nextpiece = (Int64.succ file.file_metadata_piece) in begin
236
+                        if !verbose_msg_clients then
237
+                          lprintf_file_nl (as_file file) "asking for the next piece %Ld" nextpiece;
238
+                        send_extended_piece_request c nextpiece file;
239
+                      end;
240
+                    end;
241
+                |_ ->
242
+                  if !verbose_msg_clients then
243
+                    lprintf_file_nl (as_file file) "unmatched extended subtype" ;
244
+            end;
245
+
246
+          | _ ->
247
+            if !verbose_msg_clients then
248
+              lprintf_file_nl (as_file file) "Got extended other msg ";
249
+      end;
250
+
251
     | DHT_Port port ->
252
         match !bt_dht with
253
         | None ->
254
@@ -1332,6 +1520,8 @@
255
                     lprintf_file_nl (as_file file) "READY TO DOWNLOAD FILE";
256
 
257
                   send_init !!client_uid file.file_id sock;
258
+                  send_extended_handshake c file;
259
+
260
 (* Fabrice: Initialize the client bitmap and uploader fields to <> None *)
261
                   update_client_bitmap c;
262
 (*              (try get_from_client sock c with _ -> ());*)
263
mldonkey-3.1.2.tar.bz2/src/networks/bittorrent/bTGlobals.ml -> mldonkey-3.1.3.tar.bz2/src/networks/bittorrent/bTGlobals.ml Changed
42
 
1
@@ -272,7 +272,7 @@
2
           file.file_trackers <-  t :: file.file_trackers)
3
   file_trackers
4
 
5
-let new_file file_id t torrent_diskname file_temp file_state user group =
6
+let new_file ?(metadata=false) file_id t torrent_diskname file_temp file_state user group =
7
   try
8
     Hashtbl.find files_by_uid file_id
9
   with Not_found ->
10
@@ -302,6 +302,10 @@
11
           file_session_uploaded = Int64.zero;
12
           file_session_downloaded = Int64.zero;
13
           file_last_dht_announce = 0;
14
+          file_metadata_size = 0L;
15
+          file_metadata_piece = 0L;
16
+          file_metadata_downloading = metadata;
17
+          file_metadata_chunks = Array.make 20 "";
18
           file_private = t.torrent_private;
19
         } and file_impl =  {
20
           (dummy_file_impl ()) with
21
@@ -354,10 +358,10 @@
22
       must_share_file file;
23
       file
24
 
25
-let new_download file_id t torrent_diskname user =
26
+let new_download ?(metadata=false) file_id t torrent_diskname user =
27
   let file_temp = Filename.concat !!DO.temp_directory
28
       (Printf.sprintf "BT-%s" (Sha1.to_string file_id)) in
29
-  new_file file_id t torrent_diskname file_temp FileDownloading user
30
+  new_file ~metadata file_id t torrent_diskname file_temp FileDownloading user
31
 
32
 let ft_by_num = Hashtbl.create 13
33
 let ft_counter = ref 0
34
@@ -866,6 +870,7 @@
35
           client_cache_extension = false;
36
           client_fast_extension = false;
37
           client_utorrent_extension = false;
38
+          client_ut_metadata_msg = -1L;
39
           client_azureus_messaging_protocol = false;
40
         } and impl = {
41
           dummy_client_impl with
42
mldonkey-3.1.2.tar.bz2/src/networks/bittorrent/bTInteractive.ml -> mldonkey-3.1.3.tar.bz2/src/networks/bittorrent/bTInteractive.ml Changed
74
 
1
@@ -322,6 +322,7 @@
2
   if !bt_dht <> None then
3
     emit (_s"Last DHT announce") ~desc:(_s"Last time this torrent was announced in DHT")
4
       (string_of_date file.file_last_dht_announce);
5
+  emit (_s"Metadata downloading") (if file.file_metadata_downloading then _s "yes" else _s "no");
6
 
7
   let rec print_first_tracker l =
8
     match l with
9
@@ -837,7 +838,8 @@
10
   List.iter (fun file ->
11
       (* if !verbose_share then lprintf_nl "Checking torrent share for %s" file.file_torrent_diskname; *)
12
       if not (Sys.file_exists file.file_torrent_diskname) &&
13
-        file_state file = FileShared then
14
+        file_state file = FileShared &&
15
+        not (file.file_metadata_downloading) then
16
         begin
17
           if !verbose_share then lprintf_nl "Removing torrent share for %s" file.file_torrent_diskname;
18
           BTClients.file_stop file;
19
@@ -898,6 +900,46 @@
20
   String.sub text a (b - a)
21
 
22
 let op_network_parse_url url user group =
23
+        let exn_catch f x = try `Ok (f x) with exn -> `Exn exn in
24
+        match exn_catch parse_magnet_url url with
25
+          | `Ok magnet ->
26
+            (
27
+            if !verbose then begin
28
+              lprintf_nl "Got magnet url %S" url;
29
+              List.iter (fun(v) -> lprintf_nl "magnet %s" (string_of_uid v)) magnet#uids;
30
+              List.iter (fun(v) -> lprintf_nl "magnet trackers %s" v) magnet#trackers;
31
+            end;
32
+            match List2.filter_map (function BTUrl btih -> Some btih | _ -> None) magnet#uids with
33
+              | [] -> "No btih found in magnet url", false;
34
+              | btih::_ ->
35
+                if !verbose then
36
+                  lprintf_nl "Got btih %S" (Sha1.to_string btih);
37
+                let hashstr = (Sha1.to_string btih) in 
38
+                let torrent = {
39
+                  torrent_name = hashstr; (*magnet#name*)
40
+                  torrent_filename = hashstr;
41
+                  torrent_name_utf8 = hashstr;
42
+                  torrent_comment = "";
43
+                  torrent_pieces = Array.of_list [];  
44
+                  torrent_piece_size = 1L;  
45
+                  torrent_files = []; 
46
+                  torrent_length = 1L;
47
+                  torrent_created_by = ""; 
48
+                  torrent_creation_date = 1000000L;
49
+                  torrent_modified_by = ""; 
50
+                  torrent_encoding = ""; 
51
+                  torrent_private = false; 
52
+                  torrent_announce =
53
+                    (match magnet#trackers with
54
+                     | h::q -> h
55
+                     | [] -> "");
56
+                  torrent_announce_list = magnet#trackers;
57
+                }  in
58
+                ignore(new_download ~metadata:true btih torrent "" user group);
59
+                magnet#name, true; 
60
+              )
61
+          | `Exn _ ->
62
+  (
63
   let location_regexp = "Location: \\(.*\\)" in
64
   try
65
     let real_url = get_regexp_string url (Str.regexp location_regexp) in
66
@@ -964,6 +1006,7 @@
67
        let s = Printf.sprintf "Can not load load torrent file: %s"
68
          (Printexc2.to_string e) in
69
        s, false
70
+  )
71
 
72
 let op_client_info c =
73
   check_client_country_code c;
74
mldonkey-3.1.2.tar.bz2/src/networks/bittorrent/bTProtocol.ml -> mldonkey-3.1.3.tar.bz2/src/networks/bittorrent/bTProtocol.ml Changed
43
 
1
@@ -216,7 +216,8 @@
2
           int: length (power of 2, 2 ^ 15)
3
     * 9 - DHT port announcement
4
           int16: UDP port
5
-
6
+    * 20 - extended
7
+          byte: extended message ID (0 = handshake)
8
 Choke/unchoke every 10 seconds
9
 *)
10
 
11
@@ -266,6 +267,7 @@
12
     | Ping
13
     | PeerID of string
14
     | DHT_Port of int
15
+    | Extended of int * string
16
 
17
     let to_string msg =
18
       match msg with
19
@@ -284,6 +286,7 @@
20
       | Ping -> "Ping"
21
       | PeerID s ->  Printf.sprintf  "PeerID [%s]" (String.escaped s)
22
       | DHT_Port n -> Printf.sprintf "DHT_Port %d" n
23
+      | Extended (n, s) -> Printf.sprintf  "Extended [%d %s]" n (String.escaped s)
24
 
25
     let parsing opcode m =
26
         match opcode with
27
@@ -297,6 +300,7 @@
28
         | 7 -> Piece (get_int m 0, get_uint64_32 m 4, m, 8, String.length m - 8)
29
         | 8 -> Cancel (get_int m 0, get_uint64_32 m 4, get_uint64_32 m 8)
30
         | 9 -> DHT_Port (get_int16 m 0)
31
+        | 20 -> Extended (get_int8 m 0, String.sub m 1 (String.length m - 1))
32
         | -1 -> PeerID m
33
         | _ -> raise Not_found
34
 
35
@@ -325,6 +329,7 @@
36
         | PeerID _ -> ()
37
         | Ping -> ()
38
         | DHT_Port n -> buf_int8 buf 9; buf_int16 buf n
39
+        | Extended (n,msg) -> buf_int8 buf 20; buf_int8 buf n; Buffer.add_string buf msg
40
       end;
41
       let s = Buffer.contents buf in
42
       str_int s 0 (String.length s - 4);
43
mldonkey-3.1.2.tar.bz2/src/networks/bittorrent/bTTypes.ml -> mldonkey-3.1.3.tar.bz2/src/networks/bittorrent/bTTypes.ml Changed
22
 
1
@@ -289,6 +289,7 @@
2
     mutable client_utorrent_extension : bool;
3
     mutable client_azureus_messaging_protocol : bool;
4
 
5
+    mutable client_ut_metadata_msg : int64;
6
   }
7
 
8
 and tracker_info = {
9
@@ -335,6 +336,12 @@
10
     mutable file_session_downloaded : int64;
11
     (** DHT specific *)
12
     mutable file_last_dht_announce : int;
13
+
14
+    mutable file_metadata_size : int64;
15
+    mutable file_metadata_piece : int64;
16
+    mutable file_metadata_downloading : bool;
17
+    mutable file_metadata_chunks : string array;
18
+
19
     file_private : bool;
20
   }
21
 
22
mldonkey-3.1.2.tar.bz2/src/networks/donkey/donkeyReliability.ml -> mldonkey-3.1.3.tar.bz2/src/networks/donkey/donkeyReliability.ml Changed
10
 
1
@@ -243,7 +243,7 @@
2
 
3
     let to_string v _ =
4
       let v = Marshal.to_string v [] in
5
-(* The header depends on Ocaml version. Remove it. *)
6
+(* The header depends on OCaml version. Remove it. *)
7
       let v = String.sub v (Marshal.header_size)
8
         (String.length v - Marshal.header_size) in
9
       v
10
mldonkey-3.1.2.tar.bz2/src/networks/donkey/donkeyThieves.ml -> mldonkey-3.1.3.tar.bz2/src/networks/donkey/donkeyThieves.ml Changed
10
 
1
@@ -130,7 +130,7 @@
2
 
3
     let to_string v _ =
4
       let v = Marshal.to_string v [] in
5
-(* The header depends on Ocaml version. Remove it. *)
6
+(* The header depends on OCaml version. Remove it. *)
7
       let v = String.sub v (Marshal.header_size)
8
         (String.length v - Marshal.header_size) in
9
       v
10
mldonkey-3.1.2.tar.bz2/src/utils/cdk/filename2.ml -> mldonkey-3.1.3.tar.bz2/src/utils/cdk/filename2.ml Changed
13
 
1
@@ -249,9 +249,9 @@
2
     | _ ->
3
       (try Sys.getenv "TEMP" with Not_found -> ".")
4
 
5
-(* this code is copied from Ocaml stdlib/filename.ml but
6
+(* this code is copied from OCaml stdlib/filename.ml but
7
    extended to respect runtime changes to $MLDONKEY_TEMP,
8
-   Ocaml uses variable $TMPDIR/$TEMP instead *)
9
+   OCaml uses variable $TMPDIR/$TEMP instead *)
10
 external open_desc: string -> open_flag list -> int -> int = "caml_sys_open"
11
 external close_desc: int -> unit = "caml_sys_close"
12
 
13
mldonkey-3.1.2.tar.bz2/src/utils/cdk/gd.ml -> mldonkey-3.1.3.tar.bz2/src/utils/cdk/gd.ml Changed
8
 
1
@@ -1,5 +1,5 @@
2
 (*
3
- * Ocaml-Gd. An interface to the Gd library for generating simple images
4
+ * OCaml-Gd. An interface to the Gd library for generating simple images
5
  * Based on Shawn Wagner's OCamlGD 0.7.0. with some mods from GD4O 
6
  * Copyright (C) 2002  Shawn Wagner
7
  * Copyright (C) 2003  Matthew C. Gushee
8
mldonkey-3.1.2.tar.bz2/src/utils/cdk/gdstubs.c -> mldonkey-3.1.3.tar.bz2/src/utils/cdk/gdstubs.c Changed
8
 
1
@@ -1,5 +1,5 @@
2
 /*
3
- * Ocaml-Gd. An interface to the Gd library for generating simple images
4
+ * OCaml-Gd. An interface to the Gd library for generating simple images
5
  * Based on Shawn Wagner's OCamlGD 0.7.0. with some mods from GD4O
6
  * Copyright (C) 2002  Shawn Wagner
7
  * Copyright (C) 2003  Matthew C. Gushee
8
mldonkey-3.1.2.tar.bz2/src/utils/lib/stubs_c.c -> mldonkey-3.1.3.tar.bz2/src/utils/lib/stubs_c.c Changed
22
 
1
@@ -31,6 +31,11 @@
2
 #include <sys/resource.h>
3
 #endif /* HAVE_SYS_RESOURCE_H */
4
 
5
+/* For proper FreeBSD version identification */
6
+#if defined(HAVE_SYS_PARAM_H)
7
+#include <sys/param.h>
8
+#endif
9
+
10
 #define lseek XXXXXXXXX
11
 #define read XXXXXXXXX
12
 #define ftruncate XXXXXXXXX
13
@@ -675,7 +680,7 @@
14
 
15
 #define NETDB_BUFFER_SIZE 10000
16
 
17
-#ifdef _WIN32
18
+#if defined(_WIN32) || ( defined(__FreeBSD_version) && ( ((__FreeBSD_version >= 504102) && (__FreeBSD_version < 600000)) || (__FreeBSD_version >= 600029) ) )
19
 #define GETHOSTBYADDR_IS_REENTRANT 1
20
 #define GETHOSTBYNAME_IS_REENTRANT 1
21
 #endif /* _WIN32 */
22
mldonkey-3.1.2.tar.bz2/src/utils/lib/tiger.c -> mldonkey-3.1.3.tar.bz2/src/utils/lib/tiger.c Changed
10
 
1
@@ -811,7 +811,7 @@
2
 /**************************************************************************
3
 
4
 
5
-                      Ocaml stubs (copied from md4_c.c)
6
+                      OCaml stubs (copied from md4_c.c)
7
  
8
 
9
 ***************************************************************************/
10
mldonkey-3.1.2.tar.bz2/src/utils/net/upnp_stubs.c -> mldonkey-3.1.3.tar.bz2/src/utils/net/upnp_stubs.c Changed
45
 
1
@@ -501,7 +501,7 @@
2
 
3
     if( map->enabled && ( map->natpmpState == ML_NATPMP_DISCOVER ) )
4
     {
5
-        int val = initnatpmp( &map->natpmp );
6
+        int val = initnatpmp( &map->natpmp, 0, 0 );
7
         dbg_printf( "initnatpmp = %d\n", val );
8
         val = sendpublicaddressrequest( &map->natpmp );
9
         dbg_printf( "sendpublicaddressrequest = %d\n", val );
10
@@ -639,7 +639,7 @@
11
     {
12
         struct UPNPDev * devlist;
13
         errno = 0;
14
-        devlist = upnpDiscover( 2000, NULL, NULL, 0 );
15
+        devlist = upnpDiscover( 2000, NULL, NULL, 0, 0, 0 );
16
         if( devlist == NULL )
17
         {
18
             dbg_printf( "upnpDiscover failed (errno %d - %s)\n", errno,  str_errno( errno ) );
19
@@ -680,7 +680,7 @@
20
         snprintf( type, sizeof( type ), "%s", ( map->isTcp ? "TCP" : "UDP" ) );
21
         i = UPNP_GetSpecificPortMappingEntry( map->upnpUrls.controlURL,
22
                                               map->upnpData.first.servicetype, portStr,
23
-                                              type, intClient, intPort );
24
+                                              type, intClient, intPort, NULL, NULL, NULL );
25
         if( i != UPNPCOMMAND_SUCCESS )
26
         {
27
             dbg_printf( "Port %d isn't forwarded\n", map->extPort );
28
@@ -730,7 +730,7 @@
29
             err = UPNP_AddPortMapping( map->upnpUrls.controlURL,
30
                                        map->upnpData.first.servicetype,
31
                                        extPortStr, intPortStr, map->lanaddr,
32
-                                       desc, type, NULL );
33
+                                       desc, type, NULL, "0" );
34
             map->upnpMapped = !err;
35
         }
36
         dbg_printf( "Port forwarding through \"%s\", service \"%s\". (local address[%s:%d])\n", map->upnpUrls.controlURL, map->upnpData.first.servicetype, map->lanaddr, map->intPort );
37
@@ -901,7 +901,6 @@
38
        //pthread_cond_init(&cond, NULL);
39
        pthread_mutex_init(&g_mutex, NULL);
40
        pthread_mutex_init(&g_delay_mutex, NULL);
41
-       pthread_mutex_unlock(&g_mutex);
42
 
43
        err = pthread_create(&g_pthread, &attr, upnpNatpmpThread, NULL);
44
 
45
mldonkey-3.1.2.tar.bz2/tools/ocamlpp.ml4 -> mldonkey-3.1.3.tar.bz2/tools/ocamlpp.ml4 Changed
71
 
1
@@ -1,5 +1,7 @@
2
 open Str
3
-    
4
+
5
+let outch = ref stdout
6
+
7
 (*
8
 let gen dest_filename =
9
   
10
@@ -156,8 +158,8 @@
11
   let ic = open_in filename in
12
   
13
   let line_warning line =
14
-    Printf.fprintf stdout "(*\n\n WARNING: this file is automatically generated from: \n\t%s\n\n*)\n\n" filename;
15
-    Printf.fprintf stdout "# %d \"%s\"\n" (line+1) filename;  
16
+    Printf.fprintf !outch "(*\n\n WARNING: this file is automatically generated from: \n\t%s\n\n*)\n\n" filename;
17
+    Printf.fprintf !outch "# %d \"%s\"\n" (line+1) filename;  
18
   in
19
   
20
   let rec iter_line i env =
21
@@ -178,7 +180,7 @@
22
                   line_warning (i+1);
23
                   env
24
               | Line (line, filename) ->
25
-                  Printf.fprintf stdout "# %d \"%s\"\n" line filename;
26
+                  Printf.fprintf !outch "# %d \"%s\"\n" line filename;
27
                   env
28
               | Regexps regexps2 ->
29
                   line_warning (i+1);
30
@@ -192,8 +194,8 @@
31
                 exit 2
32
           end;
33
         end else begin
34
-          output_string stdout line;
35
-          output_char stdout '\n';
36
+          output_string !outch line;
37
+          output_char !outch '\n';
38
           env
39
         end
40
     in
41
@@ -217,7 +219,7 @@
42
 
43
 let add_depend  filedep filename depends =
44
   if not (List.mem filename !depends) then begin
45
-      Printf.fprintf stdout "%s: %s\n" filedep filename;
46
+      Printf.fprintf !outch "%s: %s\n" filedep filename;
47
       depends := filename :: !depends
48
     end
49
   
50
@@ -278,13 +280,13 @@
51
         Printf.fprintf stderr "Don't know what to do with %s\n" filename;
52
         exit 2
53
       end
54
-      
55
-let _ =
56
+
57
+let () =
58
   Arg.parse 
59
     [
60
 (*    "-gen", Arg.String gen, " <filename> : generate filename"; *)
61
     "-pp", Arg.String pp, " <filename> : preprocess filename";
62
-  ] depend ""
63
-    
64
-  
65
-  
66
\ No newline at end of file
67
+    "-o", Arg.String (fun s -> outch := open_out s), " <filename> : output filename (influences subsequent options)";
68
+  ] depend "";
69
+  close_out !outch
70
+
71
Refresh

No build results available

Refresh

No rpmlint results available

Request History
Stefan Seyfried's avatar

seife created request over 11 years ago

update to 3.1.3, fix i586 runtime problem


Stefan Seyfried's avatar

seife accepted request over 12 years ago

update to 3.1.3, fix i586 runtime problem