This looks like it should be post-5.7
On 2015/02/23 21:38, Christopher Zimmermann wrote: > On Sat, 25 Oct 2014 20:05:44 +0200 Christopher Zimmermann > <chr...@openbsd.org> wrote: > > > Hi, > > > > this is a straightforward update removing tons of patches. ok? > > > > > > Christopher > > Here's an updated diff. The patches are still gone :) > > Please ok someone. > > > Christopher > > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/devel/ocaml-batteries/Makefile,v > retrieving revision 1.12 > diff -u -p -r1.12 Makefile > --- Makefile 22 Oct 2014 13:00:54 -0000 1.12 > +++ Makefile 23 Feb 2015 20:35:13 -0000 > @@ -3,14 +3,12 @@ > COMMENT = OCaml Batteries Included - OCaml foundation library > CATEGORIES = devel > > -V = 2.2.0 > +V = 2.3.1 > GH_ACCOUNT = ocaml-batteries-team > GH_PROJECT = batteries-included > GH_TAGNAME = v$V > -GH_COMMIT = 9370680ef30e225e50c76fc05654a897d79ee79d > DISTNAME = ${GH_PROJECT}-$V > PKGNAME = ocaml-batteries-$V > -REVISION = 1 > > HOMEPAGE = http://batteries.forge.ocamlcore.org/ > > Index: distinfo > =================================================================== > RCS file: /cvs/ports/devel/ocaml-batteries/distinfo,v > retrieving revision 1.5 > diff -u -p -r1.5 distinfo > --- distinfo 27 Aug 2014 07:54:22 -0000 1.5 > +++ distinfo 23 Feb 2015 20:35:13 -0000 > @@ -1,2 +1,2 @@ > -SHA256 (batteries-included-2.2.0.tar.gz) = > C3nbTrWgjk350scqV8pu5CytUeX978GtFPhgtEMCz5I= > -SIZE (batteries-included-2.2.0.tar.gz) = 711646 > +SHA256 (batteries-included-2.3.1.tar.gz) = > 33eLkPzbJiiNnZKoblHddda7fG5BiIx0jHUI6OpYsdQ= > +SIZE (batteries-included-2.3.1.tar.gz) = 729285 > Index: patches/patch-Makefile > =================================================================== > RCS file: patches/patch-Makefile > diff -N patches/patch-Makefile > --- patches/patch-Makefile 27 Aug 2014 07:54:22 -0000 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,16 +0,0 @@ > -$OpenBSD: patch-Makefile,v 1.1 2014/08/27 07:54:22 chrisz Exp $ > - > -from upstream: fix compilation with ocaml 4.02 > - > ---- Makefile.orig Fri Jan 17 20:28:42 2014 > -+++ Makefile Wed Aug 20 11:50:45 2014 > -@@ -67,7 +67,8 @@ endif > - > - PREPROCESSED_FILES = src/batMarshal.mli src/batUnix.mli > src/batPervasives.mli \ > - src/batInnerPervasives.ml src/batHashtbl.ml \ > -- src/batPrintexc.mli src/batSys.mli src/batBigarray.mli > -+ src/batPrintexc.mli src/batPrintf.ml src/batPrintf.mli \ > -+ src/batSys.mli src/batBigarray.mli > - > - .PHONY: all clean doc install uninstall reinstall test qtest qtest-clean > camfail camfailunk coverage man > - > Index: patches/patch-build_prefilter_ml > =================================================================== > RCS file: patches/patch-build_prefilter_ml > diff -N patches/patch-build_prefilter_ml > --- patches/patch-build_prefilter_ml 27 Aug 2014 07:54:22 -0000 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,39 +0,0 @@ > -$OpenBSD: patch-build_prefilter_ml,v 1.1 2014/08/27 07:54:22 chrisz Exp $ > - > -from upstream: support comparison operator for prefilter on version > -needed for backwards compatibility with ocaml < 4.2 > - > ---- build/prefilter.ml.orig Fri Jan 17 20:28:42 2014 > -+++ build/prefilter.ml Wed Aug 20 11:50:45 2014 > -@@ -3,23 +3,21 @@ let (major, minor) = > - "%d.%d." (fun j n -> (j, n)) > - > - let filter_cookie_re = > -- Str.regexp "^##V\\([^#]+\\)##" > -+ Str.regexp "^##V\\([<>]?=?\\)\\([^#]+\\)##" > - let version_re = > - Str.regexp "\\([0-9]+\\)\\(\\.\\([0-9]+\\)\\)?" > - > --let maybe f x = try Some (f x) with _ -> None > -- > - let process_line line = > - if Str.string_match filter_cookie_re line 0 then begin > -- let ver_string = Str.matched_group 1 line in > -+ let cmp = match Str.matched_group 1 line with > -+ | "<" -> (<) | ">" -> (>) | "=" -> (=) > -+ | "<=" -> (<=) | ">=" -> (>=) | _ -> (>=) > -+ in > -+ let ver_string = Str.matched_group 2 line in > - assert (Str.string_match version_re ver_string 0) ; > - let ver_maj = int_of_string (Str.matched_group 1 ver_string) in > -- let pass = match maybe (Str.matched_group 3) ver_string with > -- | None -> ver_maj <= major > -- | Some ver_min -> > -- let ver_min = int_of_string ver_min in > -- ver_maj <= major && ver_min <= minor > -- in > -+ let ver_min = try int_of_string (Str.matched_group 3 ver_string) with _ > -> 0 in > -+ let pass = cmp (major*100+minor) (ver_maj*100+ver_min) in > - if pass then Str.replace_first filter_cookie_re "" line > - else "" > - end else line > Index: patches/patch-src_batPrintf_mliv > =================================================================== > RCS file: patches/patch-src_batPrintf_mliv > diff -N patches/patch-src_batPrintf_mliv > --- patches/patch-src_batPrintf_mliv 27 Aug 2014 07:54:22 -0000 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,406 +0,0 @@ > -$OpenBSD: patch-src_batPrintf_mliv,v 1.1 2014/08/27 07:54:22 chrisz Exp $ > - > -from upstream: fix compilation with ocaml 4.02 > - > ---- src/batPrintf.mliv.orig Wed Aug 20 11:50:45 2014 > -+++ src/batPrintf.mliv Wed Aug 20 11:50:45 2014 > -@@ -0,0 +1,399 @@ > -+(* > -+ * BatPrintf - Extended Printf module > -+ * Copyright (C) 2008 David Teller > -+ * > -+ * This library is free software; you can redistribute it and/or > -+ * modify it under the terms of the GNU Lesser General Public > -+ * License as published by the Free Software Foundation; either > -+ * version 2.1 of the License, or (at your option) any later version, > -+ * with the special exception on linking described in file LICENSE. > -+ * > -+ * This library is distributed in the hope that it will be useful, > -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of > -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > -+ * Lesser General Public License for more details. > -+ * > -+ * You should have received a copy of the GNU Lesser General Public > -+ * License along with this library; if not, write to the Free Software > -+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > -+ *) > -+ > -+open BatInnerIO > -+ > -+(** Formatted output functions (also known as unparsing). > -+ > -+ @author Xavier Leroy > -+ @author Pierre Weiss > -+ @author David Teller > -+*) > -+ > -+(** > -+ {6 General overview} > -+ > -+ The functions of this module produce output according to a > -+ {!Pervasives.format}, as described below. Some functions write to > -+ the standard output (i.e. the screen), some to error channels, > -+ some to strings or to buffers, or some to abstract outputs. > -+ > -+ {b Note} The types used in this module are confusing at first. > -+ If you are a beginner, you should probably ignore them in a > -+ first time and concentrate on formats. > -+ > -+ For a first explanation, we will concentrate on function {!printf}. > -+ As all the functions in this module, the behavior of {!printf} is > -+ dictated by a {!format}. This format is a string, composed of > -+ regular text and directives, and which dictates how to interpret > -+ the other arguments passed to the function. Every directive starts > -+ with character [%]. The most common directive is [%s], which > -+ serves to display a string, something quite useful for > -+ pretty-printing or translation. Anther common directive is [%i], > -+ which serves to display an integer. > -+ > -+ For instance, ["foobar"] is a format with no directive. Calling > -+ [printf "foobar"] prints ["foobar"] on the screen and returns > -+ [()]. On the other hand, ["%s"] is a format with one directive for > -+ printing strings. [printf "%s"] does nothing yet but returns a > -+ function with type [string -> unit]. In turn, [printf "%s" > -+ "foobar"] prints ["foobar"] on the screen and returns [()]. The > -+ main interest of this module is that directives may be combined > -+ together and with text, to allow more complex printing. For instance > -+ [printf "(%s)\n"] is a function with type [string -> unit] which, > -+ when passed string ["foobar"] prints ["(foobar)"] and ends the > -+ line. Similarly, [printf "Here's the result: %s.\n\tComputation > -+ took %i seconds.\n" "foobar" 5] prints > -+ {[Here's the result: foobar > -+ Computation took 5 seconds.]} > -+ > -+ Note that [\n] (the newline character) and [\t] (the tabulation) > -+ are not specific to this module but rather part of the conventions > -+ on characters strings in OCaml. > -+ > -+ Other directives and functions make this module extremely useful > -+ for printing, pretty-printing and translation of messages to > -+ the user's language. For more information, see the documentation > -+ of {!format} and the various functions.*) > -+ > -+ > -+ > -+(** > -+ {6 Formats} > -+*) > -+ > -+type ('a, 'b, 'c) t = ('a, 'b, 'c) Pervasives.format > -+(** > -+ The format to use for displaying the various arguments passed to the > function. > -+ > -+ Syntactically, the format is a character string which contains two types > -+ of objects: plain characters, which are simply copied, and directives, > -+ each of which causes the conversion and printing of arguments. > -+ > -+ {7 Simple directives} > -+ > -+ All directives start with the [%] character. In their simplest form, > -+ a directive is [%] followed by exactly one character: > -+ > -+ - [%d], [%i], [%n], [%l], [%L], or [%N]: 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. > -+ - [%S]: insert a string argument in OCaml syntax (double quotes, > escapes). > -+ - [%c]: insert a character argument. > -+ - [%C]: insert a character argument in OCaml syntax (single quotes, > escapes). > -+ - [%f]: convert a floating-point argument to decimal notation, > -+ in the style [dddd.ddd]. > -+ - [%F]: convert a floating-point argument to OCaml syntax ([dddd.] > -+ or [dddd.ddd] or [d.ddd e+-dd]). > -+ - [%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] > -+ - [%b]: convert a boolean argument (for backward compatibility; do not > -+ use in new programs). > -+ - [%ld], [%li], [%lu], [%lx], [%lX], [%lo]: convert an [int32] argument > to > -+ the format specified by the second letter (decimal, hexadecimal, etc). > -+ - [%nd], [%ni], [%nu], [%nx], [%nX], [%no]: convert a [nativeint] > argument to > -+ the format specified by the second letter. > -+ - [%Ld], [%Li], [%Lu], [%Lx], [%LX], [%Lo]: convert an [int64] argument > to > -+ the format specified by the second letter. > -+ - [!]: take no argument and flush the output. > -+ - [%]: take no argument and output one [%] character. > -+ - [,]: the no-op delimiter for conversion specifications > -+ > -+ > -+ {7 Unparsers} > -+ > -+ - [%a]: user-defined printer. Typically, this printer corresponds to two > -+ arguments: a printing function [f], with type ['a output -> 'c -> unit] > -+ and the item [x] you want to print, with type ['c]. Item [x] will > -+ be printing by calling [f out x], where [out] is the output you are > -+ currently using -- if you are calling {!printf}, this output is > -+ the standard output (i.e. the screen), if you are calling {!eprintf}, > -+ this will be the error channel, if you are calling {!fprintf}, this > -+ will be the output you provided yourself, etc. More generally, if your > -+ {!format} has type [('a, 'b, 'd) format] or [('a, 'b, 'd, 'e) format4], > -+ the printing function [f] must have type ['b -> 'c -> 'd], where > -+ [x] has type ['d]. > -+ - [%t]: same as [%a] but takes only a printing function [f], > -+ without an item. If your {!format} has type [('a, 'b, 'd) format] > -+ or [('a, 'b, 'd, 'e) format4], function [f] must have type > -+ ['b -> 'd]. > -+ > -+ {7 Formatting formats} > -+ - [%\{ fmt %\}]: convert a {!format} to a string. The format argument > -+ must have the same type as the internal format string [fmt]. > -+ In other words, [printf "%\{ %s %\}"] accepts an argument > -+ whose type must be the same as that of format ["%s"], and > -+ prints that format argument as if it were a character string. > -+ - [%( fmt %)]: format string substitution. Takes a format string > -+ argument and substitutes it to the internal format string [fmt] > -+ to print following arguments. The argument must have the same > -+ type as [fmt]. [printf "%\{ %s %\}"] accepts an argument > -+ whose type must be the same as that of format ["%s"], and > -+ uses that argument to print the following arguments. > -+ > -+ {7 Additional options} > -+ The general format of directives is > -+ > -+ [% \[flags\] \[width\] \[.precision\] type] > -+ > -+ [type] is one of [d], [i], [n], [l], [L], [N], [u], [x] ..., > -+ [( fmt %)] and behaves as explained above. > -+ > -+ The optional [flags] are: > -+ - [-]: left-justify the output (default is right justification). > -+ - [0]: for numerical conversions, pad with zeroes instead of spaces. > -+ - [+]: for numerical conversions, prefix number with a [+] sign if > positive. > -+ - space: for numerical conversions, prefix number with a space if > positive. > -+ - [#]: request an alternate formatting style for numbers. > -+ > -+ The optional [width] is an integer indicating the minimal > -+ width of the result. For instance, [%6d] prints an integer, > -+ prefixing it with spaces to fill at least 6 characters. > -+ > -+ The optional [precision] is a dot [.] followed by an integer > -+ indicating how many digits follow the decimal point in the [%f], > -+ [%e], and [%E] conversions. For instance, [%.4f] prints a [float] with > -+ 4 fractional digits. > -+ > -+ The integer in a [width] or [precision] can also be specified as > -+ [*], in which case an extra integer argument is taken to specify > -+ the corresponding [width] or [precision]. This integer argument > -+ precedes immediately the argument to print. > -+ For instance, [%.*f] prints a [float] with as many fractional > -+ digits as the value of the argument given before the float. > -+*) > -+ > -+ > -+(** {6 Common functions}*) > -+ > -+val printf: ('b, 'a output, unit) t -> 'b > -+(**The usual [printf] function, prints to the standard output {!stdout}, > i.e. normally > -+ to the screen. If you are lost, this is probably the function you're > looking for.*) > -+ > -+val eprintf: ('b, 'a output, unit) t -> 'b > -+(**The usual [eprintf] function, prints to the standard error output > {!stderr}, used > -+ to display warnings and errors. Otherwise identical to {!printf}.*) > -+ > -+val sprintf: ('a, unit, string) t -> 'a > -+(** A function which doesn't print its result but returns it as a string. > Useful > -+ for building messages, for translation purposes or for display in a > window, > -+ for instance. > -+ > -+ While this function is quite convenient, don't abuse it to create very > large > -+ strings such as files, that's not its role. For this kind of usage, > prefer > -+ the more modular and usually faster {!fprintf}. > -+ > -+ Note that any function called with [%a] should return strings, i.e. > -+ should have type [unit -> string].*) > -+ > -+val sprintf2: ('a, 'b output, unit, string) format4 -> 'a > -+(** A function which doesn't print its result but returns it as a string. > Useful > -+ for building messages, for translation purposes or for display in a > window, > -+ for instance. > -+ > -+ While this function is quite convenient, don't abuse it to create very > large > -+ strings such as files, that's not its role. For this kind of usage, > prefer > -+ the more modular and usually faster {!fprintf}. > -+ Note that any function called with [%a] should be able to print its > result, > -+ i.e. should have type ['b output -> unit]. > -+ > -+ Warning: a partial application of this function can only be used once, > -+ because the {!BatInnerIO.output} that it uses is closed afterwards. > -+ Example: [let f = sprintf2 "%a" Int.print in [f 1; f 2]] will fail. *) > -+ > -+ > -+(** {6 General functions}*) > -+ > -+val fprintf: 'a output -> ('b, 'a output, unit) t -> 'b > -+(**General function. This function prints to any output. Typically, > -+ if you are attempting to build a large output such as a file, > -+ this is probably the function you are looking for. If you are > -+ writing a pretty-printer, this is probably the function you are > -+ looking for. If you are you are looking for a function to use for > -+ argument [%a] with {!printf}, {!eprintf}, {!sprintf2}, > -+ {!ifprintf}, {!bprintf2}, {!kfprintf}, {!ksprintf2}, {!kbprintf2} > -+ or any other function with type [(_, _ output, unit) format] or > -+ [(_, _ output, unit, _) format4], this is also probably the > -+ function you are looking for.*) > -+ > -+ > -+val ifprintf: _ -> ('b, 'a output, unit) t -> 'b > -+(**As {!fprintf} but doesn't actually print anything. > -+ Sometimes useful for debugging.*) > -+ > -+val bprintf: Buffer.t -> ('a, Buffer.t, unit) t -> 'a > -+(**As {!fprintf}, but with buffers instead of outputs. > -+ In particular, any unparser called with [%a] should > -+ write to a buffer rather than to an output*) > -+ > -+val bprintf2: Buffer.t -> ('b, 'a output, unit) t -> 'b > -+(**As {!printf} but writes to a buffer instead > -+ of printing to the output. By opposition to > -+ {!bprintf}, only the result is changed with > -+ respect to {!printf}, not the inner workings.*) > -+ > -+(**{6 Functions with continuations}*) > -+ > -+val kfprintf : ('a output -> 'b) -> 'a output -> ('c, 'a output, unit, 'b) > format4 -> 'c > -+(**Same as [fprintf], but instead of returning immediately, passes the > [output] to its first > -+ argument at the end of printing.*) > -+ > -+val ksprintf: (string -> 'a) -> ('b, unit, string, 'a) format4 -> 'b > -+(** Same as [sprintf] above, but instead of returning the string, > -+ passes it to the first argument. *) > -+val ksprintf2: (string -> 'b) -> ('c, 'a output, unit, 'b) format4 -> 'c > -+(** Same as [sprintf2] above, but instead of returning the string, > -+ passes it to the first argument. *) > -+ > -+val kbprintf : (Buffer.t -> 'a) -> > -+ Buffer.t -> ('b, Buffer.t, unit, 'a) format4 -> 'b > -+(** Same as [bprintf], but instead of returning immediately, > -+ passes the buffer to its first argument at the end of printing. *) > -+ > -+val kbprintf2 : (Buffer.t -> 'b) -> Buffer.t -> ('c, 'a output, unit, 'b) > format4 -> 'c > -+(** Same as [bprintf2], but instead of returning immediately, > -+ passes the buffer to its first argument at the end of printing.*) > -+ > -+val kprintf : (string -> 'a) -> ('b, unit, string, 'a) format4 -> 'b > -+(** @deprecated This is a deprecated synonym for [ksprintf]. *) > -+ > -+ > -+(** > -+ {6 About formats} > -+ > -+ You only need to read this if you intend to create your new printf-like > functions, > -+ which happens generally by toying with {!mkprintf}. > -+ > -+ > -+ {7 Format4} > -+ > -+ [('a, 'b, 'c, 'd) format4] is the type of arguments for > -+ [printf]-style functions such that > -+ - ['a] is the type of arguments, with a return type of ['d] > -+ {ul > -+ {- if your format looks like ["%s"], ['a] is [string -> 'd]} > -+ {- if your format looks like ["%s%s"], ['a] is [string -> string -> 'd]} > -+ {- ...} > -+ } > -+ - ['b] is the type of the first argument given to unparsers > -+ (i.e. functions introduced with [%a] or [%t]) > -+ {ul > -+ {- if your unparsers take a [unit] argument, ['b] should be > -+ [unit]} > -+ {- if your unparsers take a [string output], ['b] should be > -+ [string output]} > -+ {- ...} > -+ } > -+ - ['c] is the {b final} return type of unparsers > -+ {ul > -+ {- if you have an unparser introduced with [%t] and its result > -+ has type [unit], ['c] should be [unit]} > -+ {- if you have an unparser introduced with [%a] and its type is > -+ [string output -> string -> unit], ['c] should be [unit]} > -+ {- ...} > -+ } > -+ - ['d] is the final return value of the function once all > -+ arguments have been printed > -+ > -+ {7 Format} > -+ [('a, 'b, 'c) format] or [('a, 'b, 'c) t] is just a shortcut for [('a, > 'b, 'c, 'c) format4]. > -+ > -+ {7 Important} > -+ Note that {!Obj.magic} is involved behind this, so be careful. > -+*) > -+ > -+(**/**) > -+ > -+(* For OCaml system internal use only. Don't call directly. *) > -+ > -+##V<4.2##module CamlinternalPr : sig > -+##V<4.2## > -+##V<4.2## module Sformat : sig > -+##V<4.2## type index;; > -+##V<4.2## > -+##V<4.2## val index_of_int : int -> index;; > -+##V<4.2## external int_of_index : index -> int = "%identity";; > -+##V<4.2## external unsafe_index_of_int : int -> index = "%identity";; > -+##V<4.2## > -+##V<4.2## val succ_index : index -> index;; > -+##V<4.2## > -+##V<4.2## val sub : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> index -> int -> > string;; > -+##V<4.2## val to_string : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> string;; > -+##V<4.2## external length : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> int > -+##V<4.2## = "%string_length";; > -+##V<4.2## external get : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> int -> char > -+##V<4.2## = "%string_safe_get";; > -+##V<4.2## external unsafe_to_string : ('a, 'b, 'c, 'd, 'e, 'f) format6 > -> string > -+##V<4.2## = "%identity";; > -+##V<4.2## external unsafe_get : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> int > -> char > -+##V<4.2## = "%string_unsafe_get";; > -+##V<4.2## > -+##V<4.2## end;; > -+##V<4.2## > -+##V<4.2## module Tformat : sig > -+##V<4.2## > -+##V<4.2## type ac = { > -+##V<4.2## mutable ac_rglr : int; > -+##V<4.2## mutable ac_skip : int; > -+##V<4.2## mutable ac_rdrs : int; > -+##V<4.2## };; > -+##V<4.2## > -+##V<4.2## val ac_of_format : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> ac;; > -+##V<4.2## > -+##V<4.2## val sub_format : > -+##V<4.2## (('a, 'b, 'c, 'd, 'e, 'f) format6 -> int) -> > -+##V<4.2## (('a, 'b, 'c, 'd, 'e, 'f) format6 -> int -> char -> int) -> > -+##V<4.2## char -> > -+##V<4.2## ('a, 'b, 'c, 'd, 'e, 'f) format6 -> > -+##V<4.2## int -> > -+##V<4.2## int > -+##V<4.2## > -+##V<4.2## val summarize_format_type : ('a, 'b, 'c, 'd, 'e, 'f) format6 > -> string > -+##V<4.2## > -+##V<4.2## val scan_format : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> > -+##V<4.2## 'g array -> > -+##V<4.2## Sformat.index -> > -+##V<4.2## int -> > -+##V<4.2## (Sformat.index -> string -> int -> 'h) -> > -+##V<4.2## (Sformat.index -> 'i -> 'j -> int -> 'h) -> > -+##V<4.2## (Sformat.index -> 'k -> int -> 'h) -> > -+##V<4.2## (Sformat.index -> int -> 'h) -> > -+##V<4.2## (Sformat.index -> ('l, 'm, 'n, 'o, 'p, 'q) format6 -> int -> > 'h) -> > -+##V<4.2## 'h > -+##V<4.2## > -+##V<4.2## val kapr : > -+##V<4.2## (('a, 'b, 'c, 'd, 'e, 'f) format6 -> Obj.t array -> 'g) -> > -+##V<4.2## ('a, 'b, 'c, 'd, 'e, 'f) format6 -> > -+##V<4.2## 'g > -+##V<4.2## > -+##V<4.2## end;; > -+##V<4.2## > -+##V<4.2##end;; > -+ > -+(**/**) > Index: patches/patch-src_batPrintf_mlv > =================================================================== > RCS file: patches/patch-src_batPrintf_mlv > diff -N patches/patch-src_batPrintf_mlv > --- patches/patch-src_batPrintf_mlv 27 Aug 2014 07:54:22 -0000 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,531 +0,0 @@ > -$OpenBSD: patch-src_batPrintf_mlv,v 1.1 2014/08/27 07:54:22 chrisz Exp $ > - > -from upstream: fix compilation with ocaml 4.02 > - > ---- src/batPrintf.mlv.orig Wed Aug 20 11:50:45 2014 > -+++ src/batPrintf.mlv Wed Aug 20 11:50:45 2014 > -@@ -0,0 +1,524 @@ > -+(* > -+ * BatPrintf - Extended Printf module > -+ * Copyright (C) 2008 David Teller (contributor) > -+ * > -+ * This library is free software; you can redistribute it and/or > -+ * modify it under the terms of the GNU Lesser General Public > -+ * License as published by the Free Software Foundation; either > -+ * version 2.1 of the License, or (at your option) any later version, > -+ * with the special exception on linking described in file LICENSE. > -+ * > -+ * This library is distributed in the hope that it will be useful, > -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of > -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > -+ * Lesser General Public License for more details. > -+ * > -+ * You should have received a copy of the GNU Lesser General Public > -+ * License along with this library; if not, write to the Free Software > -+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > -+ *) > -+ > -+ > -+(** > -+ {6 Printf} > -+ > -+ A reimplementation of Printf (with a few additional functions) based > -+ on [output]. We provide an internal signature to limit the dangers > -+ of {!Obj.magic}. > -+ > -+ {b Note} this module is inlined because of circular dependencies > (themselves > -+ caused by the legacy definition of a function {!printf} in module > {!BatIO}). > -+*) > -+ > -+open BatInnerIO > -+ > -+external format_float: string -> float -> string > -+ = "caml_format_float" > -+external format_int: string -> int -> string > -+ = "caml_format_int" > -+external format_int32: string -> int32 -> string > -+ = "caml_int32_format" > -+external format_nativeint: string -> nativeint -> string > -+ = "caml_nativeint_format" > -+external format_int64: string -> int64 -> string > -+ = "caml_int64_format" > -+ > -+module Sformat = struct > -+ > -+ type index;; > -+ > -+ external unsafe_index_of_int : int -> index = "%identity";; > -+ let index_of_int i = > -+ if i >= 0 then unsafe_index_of_int i > -+ else failwith ("index_of_int: negative argument " ^ string_of_int i);; > -+ external int_of_index : index -> int = "%identity";; > -+ > -+ let add_int_index i idx = index_of_int (i + int_of_index idx);; > -+ let succ_index = add_int_index 1;; > -+ > -+ external length : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> int > -+ = "%string_length";; > -+ external get : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> int -> char > -+ = "%string_safe_get";; > -+ external unsafe_get : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> int -> char > -+ = "%string_unsafe_get";; > -+ external unsafe_to_string : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> string > -+ = "%identity";; > -+ let sub fmt idx len = > -+ String.sub (unsafe_to_string fmt) (int_of_index idx) len;; > -+ let to_string fmt = sub fmt (unsafe_index_of_int 0) (length fmt);; > -+ > -+end;; > -+ > -+let bad_conversion sfmt i c = > -+ invalid_arg > -+ ("printf: bad conversion %" ^ String.make 1 c ^ ", at char number " ^ > -+ string_of_int i ^ " in format string ``" ^ sfmt ^ "''");; > -+ > -+let bad_conversion_format fmt i c = > -+ bad_conversion (Sformat.to_string fmt) i c;; > -+ > -+let incomplete_format fmt = > -+ invalid_arg > -+ ("printf: premature end of format string ``" ^ > -+ Sformat.to_string fmt ^ "''");; > -+ > -+(* Parses a string conversion to return the specified length and the > padding direction. *) > -+let parse_string_conversion sfmt = > -+ let rec parse neg i = > -+ if i >= String.length sfmt then (0, neg) else > -+ match String.unsafe_get sfmt i with > -+ | '1'..'9' -> > -+ (int_of_string > -+ (String.sub sfmt i (String.length sfmt - i - 1)), > -+ neg) > -+ | '-' -> parse true (succ i) > -+ | _ -> parse neg (succ i) in > -+ try parse false 1 with Failure _ -> bad_conversion sfmt 0 's' > -+ > -+(* Pad a (sub) string into a blank string of length [p], > -+ on the right if [neg] is true, on the left otherwise. *) > -+let pad_string pad_char p neg s i len = > -+ if p = len && i = 0 then s else > -+ if p <= len then String.sub s i len else > -+ let res = String.make p pad_char in > -+ if neg > -+ then String.blit s i res 0 len > -+ else String.blit s i res (p - len) len; > -+ res > -+ > -+(* Format a string given a %s format, e.g. %40s or %-20s. > -+ To do: ignore other flags (#, +, etc)? *) > -+let format_string sfmt s = > -+ let (p, neg) = parse_string_conversion sfmt in > -+ pad_string ' ' p neg s 0 (String.length s);; > -+ > -+(* Extract a format string out of [fmt] between [start] and [stop] > inclusive. > -+ '*' in the format are replaced by integers taken from the [widths] list. > -+ extract_format returns a string. *) > -+let extract_format fmt start stop widths = > -+ let start = succ start in > -+ let b = Buffer.create (stop - start + 10) in > -+ Buffer.add_char b '%'; > -+ let rec fill_format i widths = > -+ if i <= stop then > -+ match (Sformat.unsafe_get fmt i, widths) with > -+ | ('*', h :: t) -> > -+ Buffer.add_string b (string_of_int h); > -+ let i = succ i in > -+ fill_format i t > -+ | ('*', []) -> > -+ assert false (* should not happen *) > -+ | (c, _) -> > -+ Buffer.add_char b c; fill_format (succ i) widths in > -+ fill_format start (List.rev widths); > -+ Buffer.contents b;; > -+ > -+let extract_format_int conv fmt start stop widths = > -+ let sfmt = extract_format fmt start stop widths in > -+ match conv with > -+ | 'n' | 'N' -> > -+ sfmt.[String.length sfmt - 1] <- 'u'; > -+ sfmt > -+ | _ -> sfmt;; > -+ > -+(* Returns the position of the next character following the meta format > -+ string, starting from position [i], inside a given format [fmt]. > -+ According to the character [conv], the meta format string is > -+ enclosed by the delimitors %{ and %} (when [conv = '{']) or %( and > -+ %) (when [conv = '(']). Hence, [sub_format] returns the index of > -+ the character following the [')'] or ['}'] that ends the meta format, > -+ according to the character [conv]. *) > -+let sub_format incomplete_format bad_conversion_format conv fmt i = > -+ let len = Sformat.length fmt in > -+ let rec sub_fmt c i = > -+ let close = if c = '(' then ')' else (* '{' *) '}' in > -+ let rec sub j = > -+ if j >= len then incomplete_format fmt else > -+ match Sformat.get fmt j with > -+ | '%' -> sub_sub (succ j) > -+ | _ -> sub (succ j) > -+ and sub_sub j = > -+ if j >= len then incomplete_format fmt else > -+ match Sformat.get fmt j with > -+ | '(' | '{' as c -> > -+ let j = sub_fmt c (succ j) in sub (succ j) > -+ | '}' | ')' as c -> > -+ if c = close then succ j else bad_conversion_format fmt i c > -+ | _ -> sub (succ j) in > -+ sub i in > -+ sub_fmt conv i;; > -+ > -+let sub_format_for_printf conv = > -+ sub_format incomplete_format bad_conversion_format conv;; > -+ > -+let iter_on_format_args fmt add_conv add_char = > -+ > -+ let lim = Sformat.length fmt - 1 in > -+ > -+ let rec scan_flags skip i = > -+ if i > lim then incomplete_format fmt else > -+ match Sformat.unsafe_get fmt i with > -+ | '*' -> scan_flags skip (add_conv skip i 'i') > -+ | '#' | '-' | ' ' | '+' -> scan_flags skip (succ i) > -+ | '_' -> scan_flags true (succ i) > -+ | '0'..'9' > -+ | '.' -> scan_flags skip (succ i) > -+ | _ -> scan_conv skip i > -+ and scan_conv skip i = > -+ if i > lim then incomplete_format fmt else > -+ match Sformat.unsafe_get fmt i with > -+ | '%' | '!' | ',' -> succ i > -+ | 's' | 'S' | '[' -> add_conv skip i 's' > -+ | 'c' | 'C' -> add_conv skip i 'c' > -+ | 'd' | 'i' |'o' | 'u' | 'x' | 'X' | 'N' -> add_conv skip i 'i' > -+ | 'f' | 'e' | 'E' | 'g' | 'G' | 'F' -> add_conv skip i 'f' > -+ | 'B' | 'b' -> add_conv skip i 'B' > -+ | 'a' | 'r' | 't' as conv -> add_conv skip i conv > -+ | 'l' | 'n' | 'L' as conv -> > -+ let j = succ i in > -+ if j > lim then add_conv skip i 'i' else begin > -+ match Sformat.get fmt j with > -+ | 'd' | 'i' | 'o' | 'u' | 'x' | 'X' -> > -+ add_char (add_conv skip i conv) 'i' > -+ | _c -> add_conv skip i 'i' end > -+ | '{' as conv -> > -+ (* Just get a regular argument, skipping the specification. *) > -+ let i = add_conv skip i conv in > -+ (* To go on, find the index of the next char after the meta format. > *) > -+ let j = sub_format_for_printf conv fmt i in > -+ (* Add the meta specification to the summary anyway. *) > -+ let rec loop i = > -+ if i < j - 2 then loop (add_char i (Sformat.get fmt i)) in > -+ loop i; > -+ (* Go on, starting at the closing brace to properly close the meta > -+ specification in the summary. *) > -+ scan_conv skip (j - 1) > -+ | '(' as conv -> > -+ (* Use the static format argument specification instead of > -+ the runtime format argument value: they must have the same type > -+ anyway. *) > -+ scan_fmt (add_conv skip i conv) > -+ | '}' | ')' as conv -> add_conv skip i conv > -+ | conv -> bad_conversion_format fmt i conv > -+ > -+ and scan_fmt i = > -+ if i < lim then > -+ if Sformat.get fmt i = '%' > -+ then scan_fmt (scan_flags false (succ i)) > -+ else scan_fmt (succ i) > -+ else i in > -+ > -+ ignore (scan_fmt 0);; > -+ > -+(* Returns a string that summarizes the typing information that a given > -+ format string contains. > -+ For instance, [summarize_format_type "A number %d\n"] is "%i". > -+ It also checks the well-formedness of the format string. *) > -+let summarize_format_type fmt = > -+ let len = Sformat.length fmt in > -+ let b = Buffer.create len in > -+ let add_char i c = Buffer.add_char b c; succ i in > -+ let add_conv skip i c = > -+ if skip then Buffer.add_string b "%_" else Buffer.add_char b '%'; > -+ add_char i c in > -+ iter_on_format_args fmt add_conv add_char; > -+ Buffer.contents b;; > -+ > -+module Ac = struct > -+ type ac = { > -+ mutable ac_rglr : int; > -+ mutable ac_skip : int; > -+ mutable ac_rdrs : int; > -+ } > -+end;; > -+ > -+open Ac;; > -+ > -+(* Computes the number of arguments of a format (including flag > -+ arguments if any). *) > -+let ac_of_format fmt = > -+ let ac = { ac_rglr = 0; ac_skip = 0; ac_rdrs = 0; } in > -+ let incr_ac skip c = > -+ let inc = if c = 'a' then 2 else 1 in > -+ if c = 'r' then ac.ac_rdrs <- ac.ac_rdrs + 1; > -+ if skip > -+ then ac.ac_skip <- ac.ac_skip + inc > -+ else ac.ac_rglr <- ac.ac_rglr + inc in > -+ let add_conv skip i c = > -+ (* Just finishing a meta format: no additional argument to record. *) > -+ if c <> ')' && c <> '}' then incr_ac skip c; > -+ succ i > -+ and add_char i _c = succ i in > -+ > -+ iter_on_format_args fmt add_conv add_char; > -+ ac;; > -+ > -+let count_arguments_of_format fmt = > -+ let ac = ac_of_format fmt in > -+ ac.ac_rglr + ac.ac_skip + ac.ac_rdrs;; > -+ > -+let list_iter_i f l = > -+ let rec loop i = function > -+ | [] -> () > -+ | [x] -> f i x (* Tail calling [f] *) > -+ | x :: xs -> f i x; loop (succ i) xs in > -+ loop 0 l;; > -+ > -+(* ``Abstracting'' version of kprintf: returns a (curried) function that > -+ will print when totally applied. > -+ Note: in the following, we are careful not to be badly caught > -+ by the compiler optimizations on the representation of arrays. *) > -+let kapr kpr fmt = > -+ match count_arguments_of_format fmt with > -+ | 0 -> kpr fmt [||] > -+ | 1 -> Obj.magic (fun x -> > -+ let a = Array.make 1 (Obj.repr 0) in > -+ a.(0) <- x; > -+ kpr fmt a) > -+ | 2 -> Obj.magic (fun x y -> > -+ let a = Array.make 2 (Obj.repr 0) in > -+ a.(0) <- x; a.(1) <- y; > -+ kpr fmt a) > -+ | 3 -> Obj.magic (fun x y z -> > -+ let a = Array.make 3 (Obj.repr 0) in > -+ a.(0) <- x; a.(1) <- y; a.(2) <- z; > -+ kpr fmt a) > -+ | 4 -> Obj.magic (fun x y z t -> > -+ let a = Array.make 4 (Obj.repr 0) in > -+ a.(0) <- x; a.(1) <- y; a.(2) <- z; > -+ a.(3) <- t; > -+ kpr fmt a) > -+ | 5 -> Obj.magic (fun x y z t u -> > -+ let a = Array.make 5 (Obj.repr 0) in > -+ a.(0) <- x; a.(1) <- y; a.(2) <- z; > -+ a.(3) <- t; a.(4) <- u; > -+ kpr fmt a) > -+ | 6 -> Obj.magic (fun x y z t u v -> > -+ let a = Array.make 6 (Obj.repr 0) in > -+ a.(0) <- x; a.(1) <- y; a.(2) <- z; > -+ a.(3) <- t; a.(4) <- u; a.(5) <- v; > -+ kpr fmt a) > -+ | nargs -> > -+ let rec loop i args = > -+ if i >= nargs then > -+ let a = Array.make nargs (Obj.repr 0) in > -+ list_iter_i (fun i arg -> a.(nargs - i - 1) <- arg) args; > -+ kpr fmt a > -+ else Obj.magic (fun x -> loop (succ i) (x :: args)) in > -+ loop 0 [];; > -+ > -+(* Get the index of the next argument to printf. *) > -+let next_index n = Sformat.succ_index n;; > -+ > -+(* Decode a format string and act on it. > -+ [fmt] is the printf format string, and [pos] points to a [%] character. > -+ After consuming the appropriate number of arguments and formatting > -+ them, one of the five continuations is called: > -+ [cont_s] for outputting a string (args: arg num, string, next pos) > -+ [cont_a] for performing a %a action (args: arg num, fn, arg, next pos) > -+ [cont_t] for performing a %t action (args: arg num, fn, next pos) > -+ [cont_f] for performing a flush action (args: arg num, next pos) > -+ [cont_m] for performing a %( action (args: arg num, sfmt, next pos) > -+ > -+ "arg num" is the index in array args of the next argument to printf. > -+ "next pos" is the position in [fmt] of the first character following > -+ the %conversion specification in [fmt]. *) > -+ > -+(* Note: here, rather than test explicitly against [Sformat.length fmt] > -+ to detect the end of the format, we use [Sformat.unsafe_get] and > -+ rely on the fact that we'll get a "nul" character if we access > -+ one past the end of the string. These "nul" characters are then > -+ caught by the [_ -> bad_conversion] clauses below. > -+ Don't do this at home, kids. *) > -+let scan_format fmt args n pos cont_s cont_a cont_t cont_f cont_m = > -+ > -+ let get_arg n = > -+ Obj.magic (args.(Sformat.int_of_index n)) in > -+ > -+ let rec scan_flags n widths i = > -+ match Sformat.unsafe_get fmt i with > -+ | '*' -> > -+ let (width : int) = get_arg n in > -+ scan_flags (next_index n) (width :: widths) (succ i) > -+ | '0'..'9' > -+ | '.' | '#' | '-' | ' ' | '+' -> scan_flags n widths (succ i) > -+ | _ -> scan_conv n widths i > -+ > -+ and scan_conv n widths i = > -+ match Sformat.unsafe_get fmt i with > -+ | '%' -> > -+ cont_s n "%" (succ i) > -+ | 's' | 'S' as conv -> > -+ let (x : string) = get_arg n in > -+ let x = if conv = 's' then x else "\"" ^ String.escaped x ^ "\"" in > -+ let s = > -+ (* optimize for common case %s *) > -+ if i = succ pos then x else > -+ format_string (extract_format fmt pos i widths) x in > -+ cont_s (next_index n) s (succ i) > -+ | 'c' | 'C' as conv -> > -+ let (x : char) = get_arg n in > -+ let s = > -+ if conv = 'c' then String.make 1 x else "'" ^ Char.escaped x ^ "'" > in > -+ cont_s (next_index n) s (succ i) > -+ | 'd' | 'i' | 'o' | 'u' | 'x' | 'X' | 'N' as conv -> > -+ let (x : int) = get_arg n in > -+ let s = > -+ format_int (extract_format_int conv fmt pos i widths) x in > -+ cont_s (next_index n) s (succ i) > -+ | 'f' | 'e' | 'E' | 'g' | 'G' -> > -+ let (x : float) = get_arg n in > -+ let s = format_float (extract_format fmt pos i widths) x in > -+ cont_s (next_index n) s (succ i) > -+ | 'F' -> > -+ let (x : float) = get_arg n in > -+ cont_s (next_index n) (string_of_float x) (succ i) > -+ | 'B' | 'b' -> > -+ let (x : bool) = get_arg n in > -+ cont_s (next_index n) (string_of_bool x) (succ i) > -+ | 'a' -> > -+ let printer = get_arg n in > -+ let n = Sformat.succ_index n in > -+ let arg = get_arg n in > -+ cont_a (next_index n) printer arg (succ i) > -+ | 't' -> > -+ let printer = get_arg n in > -+ cont_t (next_index n) printer (succ i) > -+ | 'l' | 'n' | 'L' as conv -> > -+ begin match Sformat.unsafe_get fmt (succ i) with > -+ | 'd' | 'i' | 'o' | 'u' | 'x' | 'X' -> > -+ let i = succ i in > -+ let s = > -+ match conv with > -+ | 'l' -> > -+ let (x : int32) = get_arg n in > -+ format_int32 (extract_format fmt pos i widths) x > -+ | 'n' -> > -+ let (x : nativeint) = get_arg n in > -+ format_nativeint (extract_format fmt pos i widths) x > -+ | _ -> > -+ let (x : int64) = get_arg n in > -+ format_int64 (extract_format fmt pos i widths) x in > -+ cont_s (next_index n) s (succ i) > -+ | _ -> > -+ let (x : int) = get_arg n in > -+ let s = format_int (extract_format_int 'n' fmt pos i widths) x in > -+ cont_s (next_index n) s (succ i) > -+ end > -+ | ',' -> cont_s n "" (succ i) > -+ | '!' -> cont_f n (succ i) > -+ | '{' | '(' as conv (* ')' '}' *) -> > -+ let (xf : ('a, 'b, 'c, 'd, 'e, 'f) format6) = get_arg n in > -+ let i = succ i in > -+ let j = sub_format_for_printf conv fmt i in > -+ if conv = '{' (* '}' *) then > -+ (* Just print the format argument as a specification. *) > -+ cont_s > -+ (next_index n) > -+ (summarize_format_type xf) > -+ j else > -+ (* Use the format argument instead of the format specification. *) > -+ cont_m (next_index n) xf j > -+ | (* '(' *) ')' -> > -+ cont_s n "" (succ i) > -+ | conv -> > -+ bad_conversion_format fmt i conv in > -+ > -+ scan_flags n [] (succ pos);; > -+ > -+(*Trimmed-down version of the legacy lib's [mkprintf]. Most of the > generality > -+ is lifted to [output] rather than [mkprintf] itself.*) > -+let mkprintf k out fmt = > -+ > -+ let rec pr k n fmt v = > -+ > -+ let len = Sformat.length fmt in > -+ > -+ let rec doprn n i = > -+ if i >= len then Obj.magic (k out) > -+ else match Sformat.unsafe_get fmt i with > -+ | '%' -> scan_format fmt v n i cont_s cont_a cont_t cont_f cont_m > -+ | c -> write out c; doprn n (succ i) > -+ and cont_s n s i = > -+ nwrite out s; > -+ doprn n i > -+ and cont_a n printer arg i = > -+ printer out arg; > -+ doprn n i > -+ and cont_t n printer i = > -+ printer out; > -+ doprn n i > -+ and cont_f n i = > -+ flush out; > -+ doprn n i > -+ and cont_m n xf i = > -+ let m = Sformat.add_int_index (count_arguments_of_format xf) n in > -+ pr (Obj.magic (fun _ -> doprn m i)) n xf v > -+ > -+ in doprn n 0 > -+ in let kpr = pr k (Sformat.index_of_int 0) in > -+ kapr kpr fmt;; > -+ > -+external identity : 'a -> 'a = "%identity"(*Inlined from [Std] to avoid > cyclic dependencies*) > -+let fprintf out fmt = mkprintf ignore out fmt > -+let printf fmt = fprintf stdout fmt > -+let eprintf fmt = fprintf stderr fmt > -+let ifprintf _ fmt = fprintf stdnull fmt > -+let ksprintf2 k fmt = > -+ let out = output_string () in > -+ mkprintf (fun out -> k (close_out out)) out fmt > -+let kbprintf2 k buf fmt = > -+ let out = BatBuffer.output_buffer buf in > -+ mkprintf (fun _out -> k buf) out fmt > -+let sprintf2 fmt = ksprintf2 (identity) fmt > -+let bprintf2 buf fmt = kbprintf2 ignore buf fmt > -+(** > -+ Other possible implementation of [sprintf2], > -+ left as example: > -+ > -+ [ > -+ let sprintf2 fmt = > -+ let out = output_string () in > -+ mkprintf (fun out -> close_out out) out fmt > -+ ] > -+*) > -+(** > -+ Other possible implementation of [bprintf2], > -+ left as example: > -+ [ > -+ let bprintf2 buf fmt = > -+ let out = output_buffer buf in > -+ mkprintf ignore out fmt > -+ ]*) > -+ > -+type ('a, 'b, 'c) t = ('a, 'b, 'c) Pervasives.format > -+ > -+let kfprintf = mkprintf > -+let bprintf = Printf.bprintf > -+let sprintf = Printf.sprintf > -+let ksprintf = Printf.ksprintf > -+let kbprintf = Printf.kbprintf > -+let kprintf = Printf.kprintf > -+ > -+##V<4.2##module CamlinternalPr = Printf.CamlinternalPr > Index: pkg/PFRAG.native > =================================================================== > RCS file: /cvs/ports/devel/ocaml-batteries/pkg/PFRAG.native,v > retrieving revision 1.4 > diff -u -p -r1.4 PFRAG.native > --- pkg/PFRAG.native 27 Aug 2014 07:54:22 -0000 1.4 > +++ pkg/PFRAG.native 23 Feb 2015 20:35:13 -0000 > @@ -9,6 +9,7 @@ lib/ocaml/batteries/batBitSet.cmx > lib/ocaml/batteries/batBool.cmx > lib/ocaml/batteries/batBounded.cmx > lib/ocaml/batteries/batBuffer.cmx > +lib/ocaml/batteries/batBytes.cmx > lib/ocaml/batteries/batCache.cmx > lib/ocaml/batteries/batChar.cmx > lib/ocaml/batteries/batCharParser.cmx > Index: pkg/PLIST > =================================================================== > RCS file: /cvs/ports/devel/ocaml-batteries/pkg/PLIST,v > retrieving revision 1.5 > diff -u -p -r1.5 PLIST > --- pkg/PLIST 27 Aug 2014 07:54:22 -0000 1.5 > +++ pkg/PLIST 23 Feb 2015 20:35:15 -0000 > @@ -20,6 +20,8 @@ lib/ocaml/batteries/batBounded.cmi > lib/ocaml/batteries/batBounded.mli > lib/ocaml/batteries/batBuffer.cmi > lib/ocaml/batteries/batBuffer.mli > +lib/ocaml/batteries/batBytes.cmi > +lib/ocaml/batteries/batBytes.mli > lib/ocaml/batteries/batCache.cmi > lib/ocaml/batteries/batCache.mli > lib/ocaml/batteries/batChar.cmi > @@ -226,6 +228,7 @@ share/doc/ocaml-batteries/html/api/BatBo > share/doc/ocaml-batteries/html/api/BatBounded.S.html > share/doc/ocaml-batteries/html/api/BatBounded.html > share/doc/ocaml-batteries/html/api/BatBuffer.html > +share/doc/ocaml-batteries/html/api/BatBytes.html > share/doc/ocaml-batteries/html/api/BatCache.html > share/doc/ocaml-batteries/html/api/BatChar.Incubator.Comp.html > share/doc/ocaml-batteries/html/api/BatChar.Incubator.Eq.html > @@ -411,6 +414,7 @@ share/doc/ocaml-batteries/html/api/BatPa > share/doc/ocaml-batteries/html/api/BatPathGen.StringType.html > share/doc/ocaml-batteries/html/api/BatPathGen.html > share/doc/ocaml-batteries/html/api/BatPervasives.html > +share/doc/ocaml-batteries/html/api/BatPrintexc.Slot.html > share/doc/ocaml-batteries/html/api/BatPrintexc.html > share/doc/ocaml-batteries/html/api/BatPrintf.html > share/doc/ocaml-batteries/html/api/BatQueue.Exceptionless.html > @@ -491,6 +495,7 @@ share/doc/ocaml-batteries/html/api/Batte > share/doc/ocaml-batteries/html/api/Batteries.Bit_set.html > share/doc/ocaml-batteries/html/api/Batteries.Bool.html > share/doc/ocaml-batteries/html/api/Batteries.Buffer.html > +share/doc/ocaml-batteries/html/api/Batteries.Bytes.html > share/doc/ocaml-batteries/html/api/Batteries.Cache.html > share/doc/ocaml-batteries/html/api/Batteries.Char.html > share/doc/ocaml-batteries/html/api/Batteries.CharParser.html > @@ -530,6 +535,7 @@ share/doc/ocaml-batteries/html/api/Batte > share/doc/ocaml-batteries/html/api/Batteries.Legacy.Big_int.html > share/doc/ocaml-batteries/html/api/Batteries.Legacy.Bigarray.html > share/doc/ocaml-batteries/html/api/Batteries.Legacy.Buffer.html > +share/doc/ocaml-batteries/html/api/Batteries.Legacy.Bytes.html > share/doc/ocaml-batteries/html/api/Batteries.Legacy.Callback.html > share/doc/ocaml-batteries/html/api/Batteries.Legacy.Char.html > share/doc/ocaml-batteries/html/api/Batteries.Legacy.Complex.html > @@ -668,6 +674,7 @@ share/doc/ocaml-batteries/html/api/index > share/doc/ocaml-batteries/html/api/index_class_types.html > share/doc/ocaml-batteries/html/api/index_classes.html > share/doc/ocaml-batteries/html/api/index_exceptions.html > +share/doc/ocaml-batteries/html/api/index_extensions.html > share/doc/ocaml-batteries/html/api/index_methods.html > share/doc/ocaml-batteries/html/api/index_module_types.html > share/doc/ocaml-batteries/html/api/index_modules.html > @@ -707,6 +714,7 @@ share/doc/ocaml-batteries/html/api/type_ > share/doc/ocaml-batteries/html/api/type_BatBounded.S.html > share/doc/ocaml-batteries/html/api/type_BatBounded.html > share/doc/ocaml-batteries/html/api/type_BatBuffer.html > +share/doc/ocaml-batteries/html/api/type_BatBytes.html > share/doc/ocaml-batteries/html/api/type_BatCache.html > share/doc/ocaml-batteries/html/api/type_BatChar.Incubator.Comp.html > share/doc/ocaml-batteries/html/api/type_BatChar.Incubator.Eq.html > @@ -892,6 +900,7 @@ share/doc/ocaml-batteries/html/api/type_ > share/doc/ocaml-batteries/html/api/type_BatPathGen.StringType.html > share/doc/ocaml-batteries/html/api/type_BatPathGen.html > share/doc/ocaml-batteries/html/api/type_BatPervasives.html > +share/doc/ocaml-batteries/html/api/type_BatPrintexc.Slot.html > share/doc/ocaml-batteries/html/api/type_BatPrintexc.html > share/doc/ocaml-batteries/html/api/type_BatPrintf.html > share/doc/ocaml-batteries/html/api/type_BatQueue.Exceptionless.html > @@ -972,6 +981,7 @@ share/doc/ocaml-batteries/html/api/type_ > share/doc/ocaml-batteries/html/api/type_Batteries.Bit_set.html > share/doc/ocaml-batteries/html/api/type_Batteries.Bool.html > share/doc/ocaml-batteries/html/api/type_Batteries.Buffer.html > +share/doc/ocaml-batteries/html/api/type_Batteries.Bytes.html > share/doc/ocaml-batteries/html/api/type_Batteries.Cache.html > share/doc/ocaml-batteries/html/api/type_Batteries.Char.html > share/doc/ocaml-batteries/html/api/type_Batteries.CharParser.html > @@ -1011,6 +1021,7 @@ share/doc/ocaml-batteries/html/api/type_ > share/doc/ocaml-batteries/html/api/type_Batteries.Legacy.Big_int.html > share/doc/ocaml-batteries/html/api/type_Batteries.Legacy.Bigarray.html > share/doc/ocaml-batteries/html/api/type_Batteries.Legacy.Buffer.html > +share/doc/ocaml-batteries/html/api/type_Batteries.Legacy.Bytes.html > share/doc/ocaml-batteries/html/api/type_Batteries.Legacy.Callback.html > share/doc/ocaml-batteries/html/api/type_Batteries.Legacy.Char.html > share/doc/ocaml-batteries/html/api/type_Batteries.Legacy.Complex.html > > > -- > http://gmerlin.de > OpenPGP: http://gmerlin.de/christopher.pub > F190 D013 8F01 AA53 E080 3F3C F17F B0A1 D44E 4FEE > > -- > http://gmerlin.de > OpenPGP: http://gmerlin.de/christopher.pub > F190 D013 8F01 AA53 E080 3F3C F17F B0A1 D44E 4FEE