findutils icon indicating copy to clipboard operation
findutils copied to clipboard

Implement `-fprintf`

Open hanbings opened this issue 1 year ago • 9 comments

refer: https://www.gnu.org/software/findutils/manual/html_node/find_html/Print-File-Information.html

Action: -fprintf file format
True; like ‘-printf’ but write to file like ‘-fprint’. 
The output file is always created, even if no output is ever sent to it.

-fprint see Print File Name

hanbings avatar May 11 '24 17:05 hanbings

is print in printer.rs?

keys-i avatar Jun 29 '24 08:06 keys-i

Oh, I'm sorry for overlooking this. -printf has been implemented. thanks :)

hanbings avatar Jun 29 '24 13:06 hanbings

Could you point me where because from what I read they seem to have similar implementation

keys-i avatar Jun 29 '24 13:06 keys-i

I would to try and improve cuz I want more rust in Debian

keys-i avatar Jun 29 '24 13:06 keys-i

Could you point me where because from what I read they seem to have similar implementation

Have a look at matchers/printf.rs.

cakebaker avatar Jun 29 '24 13:06 cakebaker

Could you point me where because from what I read they seem to have similar implementation

Sorry for the late reply.

In simple terms, -fprintf is an implementation of -printf that directs output to a file and -printf is implemented in printf.rs(https://github.com/uutils/findutils/blob/main/src/find/matchers/printf.rs). Here is a detailed description of -fprintf: Print File Name

Some information that might be helpful:

  • The general structure of find starts from src/find, with main.rs as the entry point, and then to src/find/matcher/mod.rs to parse the command line parameters. Then other files in src/find/matcher are responsible for processing and determining whether a file meets the requirements of the command line parameters, and finally using the write! macro to output.

  • Use the write! macro for output.

    let mut out = matcher_io.deps.get_output().borrow_mut();
    write!(out, "content").unwrap();
    

hanbings avatar Jun 29 '24 19:06 hanbings

the thing im confused about is

keys-i avatar Jul 01 '24 14:07 keys-i

should i make a new file for fprintf or just have a function since most the functionaluity is the same

keys-i avatar Jul 01 '24 14:07 keys-i

should i make a new file for fprintf or just have a function since most the functionaluity is the same

I guess yes, making the modification in the printf.rs file might use less code. For example, add an Option<Path> field to the Printf(https://github.com/uutils/findutils/blob/main/src/find/matchers/printf.rs#L600) structure and switch different outputs in write!() depending on whether Option has data.

What are your thoughts on this? :) @cakebaker

hanbings avatar Jul 01 '24 17:07 hanbings