Author: bcpierce
Date: 2014-10-21 10:06:20 -0400 (Tue, 21 Oct 2014)
New Revision: 531
Removed:
trunk/src/ubase/uprintf.ml
trunk/src/ubase/uprintf.mli
Modified:
trunk/doc/changes.tex
trunk/src/NEWS
trunk/src/RECENTNEWS
trunk/src/mkProjectInfo.ml
trunk/src/osx.ml
trunk/src/strings.ml
Log:
* Preparing for new beta release
Modified: trunk/doc/changes.tex
===================================================================
--- trunk/doc/changes.tex 2014-09-28 16:48:05 UTC (rev 530)
+++ trunk/doc/changes.tex 2014-10-21 14:06:20 UTC (rev 531)
@@ -1,3 +1,62 @@
+\begin{changesfromversion}{2.45}
+\item Incorporated a patch from Christopher Zimmermann to replace the
+ Uprintf module (which doesn't work with OCaml 4.02, causing Unison to crash) with equivalent
+ functionality from the standard library.
+\item Incorporated a refresh of the OSX GUI, contributed by Alan Shutko.
+\item Added a {\tt maxsizethreshold} option, which prevents the transfer of
+ files larger than the size specified (in Kb).
+\item Added a "copyonconflict" preference, to make a copy of files that would
+ otherwise be overwritten or deleted in case of conflicting changes.
+ (This makes it possible to automatically resolve conflicts in a
+ fairly safe way when synchronizing continuously, in combination
+ with the "{\tt repeat = watch}" and "{\tt prefer = newer}" preferences.
+%%%%%
+\item File system monitoring:
+\begin{itemize}
+\item
+The file watcher now fails when unable to
+ watch a directory, rather than silently ignoring the issue.
+\item File system monitoring: more robust communication with the helper program
+ (in socket mode, the unison server will still work properly despite
+ unexpected unison client disconnections).
+\item A bytecode version of unison-fsmonitor is now produced by "make NATIVE=false"
+\item Improved search for unison-fsmonitor
+\item Detect when the helper process exits.
+\item More robust file watching helper programs for Windows and Linux.
+ They communicate with Unison through pipes (Unison redirects stdin
+ and stdout), using a race-free protocol.
+\item Retries paths with failures using an exponential backoff algorithm.
+\item The information returned by the file watchers are used
+ independently for each replica; thus, when only one replica has
+ changes, Unison will only rescan this replica.
+\item When available, used by the graphical UIs to speed up rescanning
+ (can be disabled by setting the new {\tt watch} preference to
+\item Small fix to the way fsmonitor.py gets invoked when using the file
+ watching functionality, suggested by Josh Berdine. Unison will now
+ look for {\tt fsmonitor.py} in the same directory where the Unison
+ executable itself lives.
+\end{itemize}
+%%%%%
+\item Minor:
+\begin{itemize}
+\item Fixed a bug in export procedure that was messing up documentation
+strings.
+\item Incorporated a patch from Ir\'anyossy Knoblauch Art\'ur to make temp file
+ names fit within 143 characters (to make eCryptFS happy).
+\item Added a string to the Conflict direction to document the reason of
+ the conflict.
+\item Log conflicts and problems in the text UI even if nothing is propagated.
+\item Use hash function from OCaml 3.x for comparing archives, even when
+ compiled with OCaml 4.x.
+\item Do not restart Unison in case of uncaught exception when the repeat
+ preference is set. This seems safer. And it does not work, for
+ instance, in case of lost connection.
+\item Fix Unix.readlink invalid argument error under Windows
+\item Fix a crash when the output of the {\tt diff} program is too large.
+\item Fixed Makefile for cross-compiling towards Windows (updated to MinGW-w64)
+\end{itemize}
+\end{changesfromversion}
+
\begin{changesfromversion}{2.40.63}
\item New preference {\tt fastercheckUNSAFE}, which can be used (with care!)
to achieve {\em much} faster update detection when all the common files in
Modified: trunk/src/NEWS
===================================================================
--- trunk/src/NEWS 2014-09-28 16:48:05 UTC (rev 530)
+++ trunk/src/NEWS 2014-10-21 14:06:20 UTC (rev 531)
@@ -1,6 +1,65 @@
-Changes in Version 2.47.1
+Changes in Version 2.47.4
+ Changes since 2.45:
+ * Incorporated a patch from Christopher Zimmermann to replace the
+ Uprintf module (which doesn't work with OCaml 4.02, causing Unison
+ to crash) with equivalent functionality from the standard library.
+ * Incorporated a refresh of the OSX GUI, contributed by Alan Shutko.
+ * Added a maxsizethreshold option, which prevents the transfer of
+ files larger than the size specified (in Kb).
+ * Added a "copyonconflict" preference, to make a copy of files that
+ would otherwise be overwritten or deleted in case of conflicting
+ changes. (This makes it possible to automatically resolve conflicts
+ in a fairly safe way when synchronizing continuously, in
+ combination with the "repeat = watch" and "prefer = newer"
+ preferences.
+ * File system monitoring:
+ + The file watcher now fails when unable to watch a directory,
+ rather than silently ignoring the issue.
+ + File system monitoring: more robust communication with the
+ helper program (in socket mode, the unison server will still
+ work properly despite unexpected unison client
+ disconnections).
+ + A bytecode version of unison-fsmonitor is now produced by
+ "make NATIVE=false"
+ + Improved search for unison-fsmonitor
+ + Detect when the helper process exits.
+ + More robust file watching helper programs for Windows and
+ Linux. They communicate with Unison through pipes (Unison
+ redirects stdin and stdout), using a race-free protocol.
+ + Retries paths with failures using an exponential backoff
+ algorithm.
+ + The information returned by the file watchers are used
+ independently for each replica; thus, when only one replica
+ has changes, Unison will only rescan this replica.
+ + When available, used by the graphical UIs to speed up
+ rescanning (can be disabled by setting the new watch
+ preference to
+ + Small fix to the way fsmonitor.py gets invoked when using the
+ file watching functionality, suggested by Josh Berdine. Unison
+ will now look for fsmonitor.py in the same directory where the
+ Unison executable itself lives.
+ * Minor:
+ + Fixed a bug in export procedure that was messing up
+ documentation strings.
+ + Incorporated a patch from Irányossy Knoblauch Artúr to make
+ temp file names fit within 143 characters (to make eCryptFS
+ happy).
+ + Added a string to the Conflict direction to document the
+ reason of the conflict.
+ + Log conflicts and problems in the text UI even if nothing is
+ propagated.
+ + Use hash function from OCaml 3.x for comparing archives, even
+ when compiled with OCaml 4.x.
+ + Do not restart Unison in case of uncaught exception when the
+ repeat preference is set. This seems safer. And it does not
+ work, for instance, in case of lost connection.
+ + Fix Unix.readlink invalid argument error under Windows
+ + Fix a crash when the output of the diff program is too large.
+ + Fixed Makefile for cross-compiling towards Windows (updated to
+ MinGW-w64)
+
Changes since 2.40.63:
* New preference fastercheckUNSAFE, which can be used (with care!) to
achieve much faster update detection when all the common files in
Modified: trunk/src/RECENTNEWS
===================================================================
--- trunk/src/RECENTNEWS 2014-09-28 16:48:05 UTC (rev 530)
+++ trunk/src/RECENTNEWS 2014-10-21 14:06:20 UTC (rev 531)
@@ -1,187 +1,5 @@
-CHANGES FROM VERSION 2.47.2
+CHANGES FROM VERSION 2.47.4
-* Incorporate a small patch from Christopher Zimmermann to replace the
- Uprintf module (which doesn't work with OCaml 4.02) with equivalent
- functionality from the standard library.
+* Preparing for new beta release
-
-------------------------------
-CHANGES FROM VERSION 2.47.1
-
-* Fixed a bug in export procedure that was messing up documentation strings
-
-
--------------------------------
-CHANGES FROM VERSION 2.47.0
-
-* Incorporated a refresh of the OSX GUI, contributed by Alan Shutko.
-
-* Update dates in copyright notices
-
-* Tidying for beta-release
-
--------------------------------
-CHANGES FROM VERSION 2.46.20
-
-* Incorporated patch from Irányossy Knoblauch Artúr to make temp file
- names fit within 143 characters (to make eCryptFS happy).
-
-
--------------------------------
-CHANGES FROM VERSION 2.46.18
-
-* Incorporated patch from Irányossy Knoblauch Artúr to make temp file
- names fit within 143 characters (to make eCryptFS happy).
-
-* Adapting the GTK UI to the new Conflict type. For the moment, the
- string carried is not used.
-
--------------------------------
-CHANGES FROM VERSION 2.46.13
-
-* Log conflicts and problems in the text UI even if nothing is propagated.
-* Added a string to the Conflict direction to document the reason of
- the conflict. The text UI has been adapted to this change, the other
- UIs need to be modified.
-* Adding the maxsizethreshold option which prevents the transfer of
- files larger than the size specified (in Kb)
-
--------------------------------
-CHANGES FROM VERSION 2.46.12
-
-* File system monitoring: the file watcher now fails when unable to
- watch a directory, rather than silently ignoring the issue
-
--------------------------------
-CHANGES FROM VERSION 2.46.10
-
-* File system monitoring: more robust communication with the helper program
- (in socket mode, the unison server will still work properly despite
- unexpected unison client disconnections)
-
--------------------------------
-CHANGES FROM VERSION 2.46.9
-
-* Use hash function from OCaml 3.x for comparing archives, even when
- compiled with OCaml 4.x
-
--------------------------------
-CHANGES FROM VERSION 2.46.8
-
-* Filesystem monitoring: do not use filters on maps, for compatibility
- with OCaml 3.11
-
--------------------------------
-CHANGES FROM VERSION 2.46.6
-
-* A bytecode version of unison-fsmonitor is now produced by "make NATIVE=false"
-
--------------------------------
->>>>>>> .r525
-CHANGES FROM VERSION 2.46.4
-
-* Windows/lwt: correctly deals with Sys.Break exceptions when sleeping
-* File system monitoring: improved search for unison-fsmonitor
-* File system monitoring: detect when the helper process exits
-* Do not restart Unison in case of uncaught exception when the repeat
- preference is set. This seems safer. And it does not work, for
- instance, in case of lost connection.
-
--------------------------------
-CHANGES FROM VERSION 2.46.3
-
-* Add a note to the 'new archives not identical' error message
- explaining that this can happen because Unison binaries compiled
- with OCaml 3 and OCaml 4 are incompatible.
-
-
--------------------------------
-CHANGES FROM VERSION 2.46.2
-
-* Fix Unix.readlink invalid argument error under Windows
-
--------------------------------
-CHANGES FROM VERSION 2.46.1
-
-* More robust file watching helper programs for Windows and Linux.
- They communicate with Unison through pipes (Unison redirects stdin
- and stdout), using a race-free protocol.
-
--------------------------------
-CHANGES FROM VERSION 2.46.0
-
-* Added a "copyonconflict" preference, to make a copy of files that would
- otherwise be overwritten or deleted in case of conflicting changes.
- (This makes it possible to automatically resolve conflicts in a
- fairly safe way when synchronizing continuously, in combination
- with the "repeat = watch" and "prefer = newer" preferences.
-
--------------------------------
-CHANGES FROM VERSION 2.46.-1
-
-* Bumped version number: incompatible protocol changes
-* Improvements to the file watching functionality:
- - retries paths with failures using an exponential backoff algorithm
- - the information returned by the file watchers are used
- independently for each replica; thus, when only one replica has
- changes, Unison will only rescan this replica
- - when available, used by the graphical UIs to speed up rescanning
- (can be disabled by setting the new 'watch' preference to false)
-
--------------------------------
-CHANGES FROM VERSION 2.45.15
-
-* transfer.ml: updated debugging code; in particular, turns an
- assertion failure into a more friendly transient failure
-
--------------------------------
-CHANGES FROM VERSION 2.45.14
-
-* Function External.readChannelTillEof now tail recursive
- (prevents a crash when the output of the diff program is too large)
-
--------------------------------
-CHANGES FROM VERSION 2.45.13
-
-* Fixed Makefile for cross-compiling towards Windows (updated to MinGW-w64)
-
--------------------------------
-CHANGES FROM VERSION 2.45.12
-
-* fsmonitor.py: fixed busy wait under Windows
-* fsmonitor.py: make sure this helper program exits when Unison terminates
- (now, fsmonitor.py exits when stdin is closed, and Unison redirects stdin)
-
--------------------------------
-CHANGES FROM VERSION 2.45.11
-
-* Fix bug in Lwt_unix.sleep
-
--------------------------------
-CHANGES FROM VERSION 2.45.9
-
-* Added some more debugging code in transfer.ml
--------------------------------
-CHANGES FROM VERSION 2.45.7
-
-* Small fix to the way fsmonitor.py gets invoked when using the file
- watching functionality, suggested by Josh Berdine. Unison will now
- look for fsmonitor.py in the same directory where the Unison
- executable itself lives.
--------------------------------
-CHANGES FROM VERSION 2.45.7
-
-* Small fix to the way fsmonitor.py gets invoked when using the file
- watching functionality, suggested by Josh Berdine. Unison will now
- look for fsmonitor.py in the same directory where the Unison
- executable itself lives.
-
-* Fix bug in last commit
-
-* Added some debugging code in transfer.ml
-
-* Display full stack backtraces when printing exceptions, per comment
- from Jerome
-
-- fixed a bug in the lookup of the host name on the server
-
Modified: trunk/src/mkProjectInfo.ml
===================================================================
--- trunk/src/mkProjectInfo.ml 2014-09-28 16:48:05 UTC (rev 530)
+++ trunk/src/mkProjectInfo.ml 2014-10-21 14:06:20 UTC (rev 531)
@@ -95,3 +95,4 @@
+
Modified: trunk/src/osx.ml
===================================================================
--- trunk/src/osx.ml 2014-09-28 16:48:05 UTC (rev 530)
+++ trunk/src/osx.ml 2014-10-21 14:06:20 UTC (rev 531)
@@ -206,7 +206,8 @@
| `DIRECTORY -> { ressInfo = NoRess; finfo = "D" }
| _ -> { ressInfo = NoRess; finfo = "" }
-let noTypeCreator = String.make 10 '\000'
+(* BCP: dead code
+ let noTypeCreator = String.make 10 '\000' *)
(* Remove trailing zeroes *)
let trim s =
Modified: trunk/src/strings.ml
===================================================================
--- trunk/src/strings.ml 2014-09-28 16:48:05 UTC (rev 530)
+++ trunk/src/strings.ml 2014-10-21 14:06:20 UTC (rev 531)
@@ -4,7 +4,7 @@
let docs =
("about", ("About Unison",
"Unison File Synchronizer\n\
- Version 2.47.1\n\
+ Version 2.47.4\n\
\n\
"))
::
@@ -2768,9 +2768,68 @@
\n\
"))
::
- ("news", ("Changes in Version 2.47.1",
- "Changes in Version 2.47.1\n\
+ ("news", ("Changes in Version 2.47.4",
+ "Changes in Version 2.47.4\n\
\n\
+ \032 Changes since 2.45:\n\
+ \032 * Incorporated a patch from Christopher Zimmermann to replace the\n\
+ \032 Uprintf module (which doesn't work with OCaml 4.02, causing Unison\n\
+ \032 to crash) with equivalent functionality from the standard library.\n\
+ \032 * Incorporated a refresh of the OSX GUI, contributed by Alan Shutko.\n\
+ \032 * Added a maxsizethreshold option, which prevents the transfer of\n\
+ \032 files larger than the size specified (in Kb).\n\
+ \032 * Added a \"copyonconflict\" preference, to make a copy of files that\n\
+ \032 would otherwise be overwritten or deleted in case of conflicting\n\
+ \032 changes. (This makes it possible to automatically resolve conflicts\n\
+ \032 in a fairly safe way when synchronizing continuously, in\n\
+ \032 combination with the \"repeat = watch\" and \"prefer = newer\"\n\
+ \032 preferences.\n\
+ \032 * File system monitoring:\n\
+ \032 + The file watcher now fails when unable to watch a directory,\n\
+ \032 rather than silently ignoring the issue.\n\
+ \032 + File system monitoring: more robust communication with the\n\
+ \032 helper program (in socket mode, the unison server will still\n\
+ \032 work properly despite unexpected unison client\n\
+ \032 disconnections).\n\
+ \032 + A bytecode version of unison-fsmonitor is now produced by\n\
+ \032 \"make NATIVE=false\"\n\
+ \032 + Improved search for unison-fsmonitor\n\
+ \032 + Detect when the helper process exits.\n\
+ \032 + More robust file watching helper programs for Windows and\n\
+ \032 Linux. They communicate with Unison through pipes (Unison\n\
+ \032 redirects stdin and stdout), using a race-free protocol.\n\
+ \032 + Retries paths with failures using an exponential backoff\n\
+ \032 algorithm.\n\
+ \032 + The information returned by the file watchers are used\n\
+ \032 independently for each replica; thus, when only one replica\n\
+ \032 has changes, Unison will only rescan this replica.\n\
+ \032 + When available, used by the graphical UIs to speed up\n\
+ \032 rescanning (can be disabled by setting the new watch\n\
+ \032 preference to\n\
+ \032 + Small fix to the way fsmonitor.py gets invoked when using the\n\
+ \032 file watching functionality, suggested by Josh Berdine. Unison\n\
+ \032 will now look for fsmonitor.py in the same directory where the\n\
+ \032 Unison executable itself lives.\n\
+ \032 * Minor:\n\
+ \032 + Fixed a bug in export procedure that was messing up\n\
+ \032 documentation strings.\n\
+ \032 + Incorporated a patch from Ir\225nyossy Knoblauch Art\250r to make\n\
+ \032 temp file names fit within 143 characters (to make eCryptFS\n\
+ \032 happy).\n\
+ \032 + Added a string to the Conflict direction to document the\n\
+ \032 reason of the conflict.\n\
+ \032 + Log conflicts and problems in the text UI even if nothing is\n\
+ \032 propagated.\n\
+ \032 + Use hash function from OCaml 3.x for comparing archives, even\n\
+ \032 when compiled with OCaml 4.x.\n\
+ \032 + Do not restart Unison in case of uncaught exception when the\n\
+ \032 repeat preference is set. This seems safer. And it does not\n\
+ \032 work, for instance, in case of lost connection.\n\
+ \032 + Fix Unix.readlink invalid argument error under Windows\n\
+ \032 + Fix a crash when the output of the diff program is too large.\n\
+ \032 + Fixed Makefile for cross-compiling towards Windows (updated to\n\
+ \032 MinGW-w64)\n\
+ \n\
\032 Changes since 2.40.63:\n\
\032 * New preference fastercheckUNSAFE, which can be used (with care!) to\n\
\032 achieve much faster update detection when all the common files in\n\
Deleted: trunk/src/ubase/uprintf.ml
===================================================================
--- trunk/src/ubase/uprintf.ml 2014-09-28 16:48:05 UTC (rev 530)
+++ trunk/src/ubase/uprintf.ml 2014-10-21 14:06:20 UTC (rev 531)
@@ -1,94 +0,0 @@
-(***********************************************************************)
-(* *)
-(* Objective Caml *)
-(* *)
-(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
-(* *)
-(* Copyright 1996 Institut National de Recherche en Informatique et *)
-(* en Automatique. All rights reserved. This file is distributed *)
-(* under the terms of the GNU Library General Public License. *)
-(* *)
-(***********************************************************************)
-
-external caml_format_int: string -> int -> string = "caml_format_int"
-external caml_format_float: string -> float -> string = "caml_format_float"
-
-let fprintf outchan doafter format =
- let format = (Obj.magic format : string) in
- let rec doprn i =
- if i >= String.length format then
- (doafter(); Obj.magic ())
- else begin
- let c = String.unsafe_get format i in
- if c <> '%' then begin
- output_char outchan c;
- doprn (succ i)
- end else begin
- let j = skip_args (succ i) in
- match String.unsafe_get format j with
- '%' ->
- output_char outchan '%';
- doprn (succ j)
- | 's' ->
- Obj.magic(fun s ->
- if j <= i+1 then
- output_string outchan s
- else begin
- let p =
- try
- int_of_string (String.sub format (i+1) (j-i-1))
- with Failure _ ->
- invalid_arg "fprintf: bad %s format" in
- if p > 0 && String.length s < p then begin
- output_string outchan
- (String.make (p - String.length s) ' ');
- output_string outchan s
- end else if p < 0 && String.length s < -p then begin
- output_string outchan s;
- output_string outchan
- (String.make (-p - String.length s) ' ')
- end else
- output_string outchan s
- end;
- doprn (succ j))
- | 'c' ->
- Obj.magic(fun c ->
- output_char outchan c;
- doprn (succ j))
- | 'd' | 'i' | 'o' | 'x' | 'X' | 'u' ->
- Obj.magic(fun n ->
- output_string outchan
- (caml_format_int (String.sub format i (j-i+1)) n);
- doprn (succ j))
- | 'f' | 'e' | 'E' | 'g' | 'G' ->
- Obj.magic(fun f ->
- output_string outchan
- (caml_format_float (String.sub format i (j-i+1)) f);
- doprn (succ j))
- | 'b' ->
- Obj.magic(fun b ->
- output_string outchan (string_of_bool b);
- doprn (succ j))
- | 'a' ->
- Obj.magic(fun printer arg ->
- printer outchan arg;
- doprn(succ j))
- | 't' ->
- Obj.magic(fun printer ->
- printer outchan;
- doprn(succ j))
- | c ->
- invalid_arg ("fprintf: unknown format")
- end
- end
-
- and skip_args j =
- match String.unsafe_get format j with
- '0' .. '9' | ' ' | '.' | '-' -> skip_args (succ j)
- | c -> j
-
- in doprn 0
-
-let printf doafter fmt = fprintf stdout doafter fmt
-and eprintf doafter fmt = fprintf stderr doafter fmt
-
Deleted: trunk/src/ubase/uprintf.mli
===================================================================
--- trunk/src/ubase/uprintf.mli 2014-09-28 16:48:05 UTC (rev 530)
+++ trunk/src/ubase/uprintf.mli 2014-10-21 14:06:20 UTC (rev 531)
@@ -1,75 +0,0 @@
-(***********************************************************************)
-(* *)
-(* Objective Caml *)
-(* *)
-(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
-(* *)
-(* Copyright 1996 Institut National de Recherche en Informatique et *)
-(* en Automatique. All rights reserved. This file is distributed *)
-(* under the terms of the GNU Library General Public License. *)
-(* *)
-(***********************************************************************)
-
-(* Modified for Unison *)
-
-
-(* Module [Printf]: formatting printing functions *)
-
-val fprintf: out_channel -> (unit->unit) -> ('a, out_channel, unit) format -> 'a
- (* [fprintf outchan doafter format arg1 ... argN] formats the arguments
- [arg1] to [argN] according to the format string [format],
- outputs the resulting string on the channel [outchan], and then
- executes the thunk [doafter].
-
- The format is a character string which contains two types of
- objects: plain characters, which are simply copied to the
- output channel, and conversion specifications, each of which
- causes conversion and printing of one argument.
-
- Conversion specifications consist in the [%] character, followed
- by optional flags and field widths, followed by one conversion
- character. The conversion characters and their meanings are:
-- [d] or [i]: convert an integer argument to signed decimal
-- [u]: convert an integer argument to unsigned decimal
-- [x]: convert an integer argument to unsigned hexadecimal,
- using lowercase letters.
-- [X]: convert an integer argument to unsigned hexadecimal,
- using uppercase letters.
-- [o]: convert an integer argument to unsigned octal.
-- [s]: insert a string argument
-- [c]: insert a character argument
-- [f]: convert a floating-point argument to decimal notation,
- in the style [dddd.ddd]
-- [e] or [E]: convert a floating-point argument to decimal notation,
- in the style [d.ddd e+-dd] (mantissa and exponent)
-- [g] or [G]: convert a floating-point argument to decimal notation,
- in style [f] or [e], [E] (whichever is more compact)
-- [b]: convert a boolean argument to the string [true] or [false]
-- [a]: user-defined printer. Takes two arguments and apply the first
- one to [outchan] (the current output channel) and to the second
- argument. The first argument must therefore have type
- [out_channel -> 'b -> unit] and the second ['b].
- The output produced by the function is therefore inserted
- in the output of [fprintf] at the current point.
-- [t]: same as [%a], but takes only one argument (with type
- [out_channel -> unit]) and apply it to [outchan].
-- [%]: take no argument and output one [%] character.
-- Refer to the C library [printf] function for the meaning of
- flags and field width specifiers.
-
- Warning: if too few arguments are provided,
- for instance because the [printf] function is partially
- applied, the format is immediately printed up to
- the conversion of the first missing argument; printing
- will then resume when the missing arguments are provided.
- For example, [List.iter (printf "x=%d y=%d " 1) [2;3]]
- prints [x=1 y=2 3] instead of the expected
- [x=1 y=2 x=1 y=3]. To get the expected behavior, do
- [List.iter (fun y -> printf "x=%d y=%d " 1 y) [2;3]]. *)
-
-val printf: (unit->unit) -> ('a, out_channel, unit) format -> 'a
- (* Same as [fprintf], but output on [stdout]. *)
-
-val eprintf: (unit->unit) -> ('a, out_channel, unit) format -> 'a
- (* Same as [fprintf], but output on [stderr]. *)
-
_______________________________________________
Unison-hackers mailing list
[email protected]
http://lists.seas.upenn.edu/mailman/listinfo/unison-hackers
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.