(* 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 [] ;;