let rec copy_rec source dest = let infos = lstat source in match infos.st_kind with | S_REG -> file_copy source dest; set_infos dest infos | S_LNK -> let link = readlink source in symlink link dest | S_DIR -> mkdir dest 0o200; Misc.iter_dir (fun file -> if file <> Filename.current_dir_name && file <> Filename.parent_dir_name then copy_rec (Filename.concat source file) (Filename.concat dest file)) source; set_infos dest infos | _ -> prerr_endline ("Can't cope with special file " ^ source)
That snippet is ugly. Cleaner OCaml is easier to maintain than the average bash blob if you care more about finding mistakes before prod than saving ten minutes on ML syntax.
https://www.informit.com/store/linux-application-development...
Judging by the publisher's sample,[1] the second edition (2025) looked like a worthwhile upgrade, so I ordered it. Much of the material is in the manpages, but this presents it with better explanations.
___
1. <https://ptgmedia.pearsoncmg.com/images/9780135325520/samplep...>
Static linking libraries for MacOS or Windows is contaminated by GPL/LGPL code, and this is why wxwidgets excludes the disclosure requirement.
Also, if you are looking for a VueJS cross-platform GUI framework for most Desktop and Mobile platforms (modern MacOS hardware and developer account is a requirement):
https://github.com/quasarframework/quasar
Qt5/Qt6 frameworks sooner or later cause more problems than they solve, and require a lot more maintenance/support.
Best of luck =3