[Unison-hackers] [unison-svn] r531 - in trunk: doc src src/ubase
bcpierce at seas.upenn.edu
bcpierce at seas.upenn.edu
Tue Oct 21 10:06:20 EDT 2014
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]. *)
-
More information about the Unison-hackers
mailing list