This file is indexed.

/usr/lib/ocaml/oasis/OASISUtils.mli is in liboasis-ocaml-dev 0.3.0-4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
(******************************************************************************)
(* OASIS: architecture for building OCaml libraries and applications          *)
(*                                                                            *)
(* Copyright (C) 2008-2010, OCamlCore SARL                                    *)
(*                                                                            *)
(* 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 OCaml static compilation          *)
(* exception.                                                                 *)
(*                                                                            *)
(* 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 file COPYING 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA              *)
(******************************************************************************)

(** Various utilities 
    @author Sylvain Le Gall
  *)

(** {2 Map} *)

module MapString: Map.S with type key = String.t

(** Convert a string association list to a map. *)
val map_string_of_assoc : (string * 'a) list -> 'a MapString.t

(** {2 Set} *)

(** Set for String. 
  *)
module SetString: Set.S with type elt = String.t

(** Add a string list to an existing Set. *)
val set_string_add_list : SetString.t -> SetString.elt list -> SetString.t

(** Convert a string list to a Set. *)
val set_string_of_list : SetString.elt list -> SetString.t

(** {2 Hashtable} *)

(** Caseless string hashtable
  *)
module HashStringCsl: Hashtbl.S with type key = String.t

(** {2 Variable name} *)

(** [varname_of_string ~hyphen:c s] Transform a string [s] into a variable name, 
    following this convention: no digit at the beginning, lowercase, only a-z
    and 0-9 chars. Whenever there is a problem, use an hyphen.
  *)
val varname_of_string : ?hyphen:char -> string -> string

(** [varname_concat ~hyphen p s] Concat variable name, removing hyphen at end
    of [p] and at beginning of [s].
  *)
val varname_concat : ?hyphen:char -> string -> string -> string

(** [is_varname str] Check that the string [str] is a valid varname. See
    {!varname_of_string} for definition.
  *)
val is_varname: string -> bool

(** {2 Fail with Printf.sprintf} *)

(** This function raise the [Failure] exception just as [failwith]
    except that one specify the string raised through a format string.

    Example: [failwithf "Cannot do %s because of %d" str i]
  *)
val failwithf : ('a, unit, string, 'b) format4 -> 'a

(** {2 String} *)

(** Caseless compare function
  *)
val compare_csl : string -> string -> int

(** Split a list using ',' as separator. {b Not exported}
  *)
val split_comma : string -> string list

(** Split a list using '\n' as separator. {b Not exported}
  *)
val split_newline : ?trim:bool -> string -> string list

(** Split a string containing '(...)' optionally. {b Not exported} 
  *)
val split_optional_parentheses : string -> string * (string option)

module POSIXShell :
sig

  val split : string -> string list
  (** [split s]: the string [s] is interpreted as command line
      arguments and splitted into its components (un-escaped).  For
      example [split "a \"b c\" d" = ["a"; "b c"; "d"]].  Note that
      [split "" = []].  It is possible that substitutions such as "$a"
      (resp. "$(a b)") may be transformed into "$\{a\}" (resp. "$\{a b\}"). *)

  val escape : string -> string
  (** [escape s] quote [s] if needed to protect spaces, '"' and '\''
      so it reads as a single argument in a POSIX shell command, the
      content of which is identical to [s] (interpreted with OCaml
      conventions).  If quoted, the returned string will start and end
      with '"'.  The original string [s] is returned if no quoting is
      necessary. *)

  val unescape : string -> string
  (** [unescape s] returns a string [s'] removing all backslashes
      preceding a char. *)
  ;;
end