let all_upper_dir fln = 
    let rec all_upper_dir_aux lst fln = 
      let dir = dirname fln
      in
      match lst with
        prev_dir :: tl when prev_dir = dir ->
        lst
      | _ ->
          all_upper_dir_aux (dir :: lst) dir
      in
      all_upper_dir_aux [fln] fln