diff options
Diffstat (limited to 'fuzz/atom/vercmp/gencorpus.rs')
| -rw-r--r-- | fuzz/atom/vercmp/gencorpus.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/fuzz/atom/vercmp/gencorpus.rs b/fuzz/atom/vercmp/gencorpus.rs new file mode 100644 index 0000000..6d5eeef --- /dev/null +++ b/fuzz/atom/vercmp/gencorpus.rs @@ -0,0 +1,43 @@ +use std::{ + env, + error::Error, + fs::{self, OpenOptions}, + io::Write, + path::PathBuf, +}; + +use gentoo_utils::ebuild::repo::Repo; + +fn main() -> Result<(), Box<dyn Error>> { + let corpus_dir = PathBuf::from( + env::args() + .nth(1) + .expect("expected corpus directory as first argument"), + ); + + fs::create_dir_all(&corpus_dir)?; + + let repo = Repo::new("/var/db/repos/gentoo"); + let mut versions = Vec::new(); + + for category in repo.categories()? { + for ebuild in category?.ebuilds()? { + let version = ebuild?.version().clone(); + + versions.push(version); + } + } + + for (i, version) in versions.iter().enumerate() { + let path = corpus_dir.as_path().join(i.to_string()); + let mut file = OpenOptions::new() + .write(true) + .truncate(true) + .create(true) + .open(path)?; + + write!(file, "{version}")?; + } + + Ok(()) +} |
