--- /dev/null
+
+(* QUESTE FUNZIONI ORA NON VENGONO USATE, SONO STATE INSERITE NEI FILE DELLE
+
+ FUNZIONI CHE LE USANO!!!!*)
+
+
+
+open Unix;;
+
+(* Data una lista di token restituisce la stringa formata da tutti i token *)
+let rec token_to_str p =
+ match p with
+ [] -> ""
+ | head::tail ->
+ let h = match head with
+ MQBC s -> Str.global_replace (Str.regexp "\.") "\\\\\." s
+ | MQBD -> "/"
+ | MQBQ -> "[^/#]?"
+ | MQBS -> "[^/#]*"
+ | MQBSS -> "[^#]*"
+ in
+ h ^ (patterneval tail)
+;;
+
+
+
+
+(* data la lista dei token(fi) la trasforma in stringa aggiungendo la virgola
+tra un token e l'altro *)
+let rec fitoken_to_str p =
+ match p with
+ [] -> ""
+ | head::tail ->
+ let h = match head with
+ MQBQ -> "[^/#]?" ^ ","
+ | MQBS -> "[^/#]*" ^ ","
+ | MQBSS -> "[^#]*" ^ ","
+ in
+ h ^ (patterneval tail)
+;;
+
+
+
+
+
+
+
+(* NON SERVE ORA! *)
+
+(* Dato un path stringa restituisce la lista dei file contenuti a ogni livello
+nella dir relativa al path *)
+
+(*let rec entry_list aspattern dir =
+
+ if !contains(aspattern,'.')
+ then
+ let indir = opendir(aspattern) in
+ let ent = readdir(indir) in
+ if contains(ent, '.') (*se la entry e' un file*)
+ then [geturi(ent)] @ entry_list(readdir(indir), indir)
+ else
+ entry_list(ent, indir) (*se la entry e' una dir*)
+
+ else
+ [geturi(aspattern)] @ entry_list(readdir(dir), dir)*) (*se aspattern e' un file*)
+
+
+
+(* FUNZIONE DI MATCHING: prende il descrittore del file delle uri e il path da
+matchare formato stringa e restituisce la lista dei path che fanno match in
+formato stringa !! TAIL-RECURSIVE !! *)
+
+let pmatch inp path =
+ let rec aux inp path acc =
+
+ let s= try
+ Some (Str.string_after (input_line(inp)) 61)
+ with End_of_file -> None
+ in match s with
+ | Some s ->
+ if Str.string_match (Str.regexp path) s 0
+ then
+ begin
+ let p = (Str.match_end()-3)
+ in
+ aux inp path ((Str.string_before s p)::acc)
+ end
+ else
+ (aux inp path acc)
+ | None -> List.rev acc
+ in
+ aux inp path []
+;;
+
+
+
+
+