Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement -fprintf #383

Open
hanbings opened this issue May 11, 2024 · 9 comments
Open

Implement -fprintf #383

hanbings opened this issue May 11, 2024 · 9 comments

Comments

@hanbings
Copy link
Collaborator

hanbings commented May 11, 2024

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

@radhesh1
Copy link

is print in printer.rs?

@hanbings
Copy link
Collaborator Author

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

@hanbings hanbings changed the title Implement -printf and -fprintf Implement -fprintf Jun 29, 2024
@radhesh1
Copy link

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

@radhesh1
Copy link

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

@cakebaker
Copy link
Contributor

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

Have a look at matchers/printf.rs.

@hanbings
Copy link
Collaborator Author

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();

@radhesh1
Copy link

radhesh1 commented Jul 1, 2024

the thing im confused about is

@radhesh1
Copy link

radhesh1 commented Jul 1, 2024

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

@hanbings
Copy link
Collaborator Author

hanbings commented Jul 1, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants