From 92f786dfe0bead62aab554285b93da8aa9a43105 Mon Sep 17 00:00:00 2001 From: Tnze Date: Wed, 7 Aug 2019 21:50:31 +0800 Subject: [PATCH] =?UTF-8?q?mcadump=E7=8E=B0=E5=9C=A8=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E9=80=9A=E9=85=8D=E7=AC=A6=E5=8C=B9=E9=85=8D=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/mcadump/mcadump.go | 55 +++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/cmd/mcadump/mcadump.go b/cmd/mcadump/mcadump.go index 64110f2..874860d 100644 --- a/cmd/mcadump/mcadump.go +++ b/cmd/mcadump/mcadump.go @@ -32,11 +32,44 @@ func main() { f, o = args[0], args[1] } - if *repack { - pack(f, o) - return - } + dirName := filepath.Dir(f) + patName := filepath.Base(f) + dir, err := os.Open(dirName) + checkerr(err) + + fs, err := dir.Readdirnames(0) + checkerr(err) + + for _, f := range fs { + ok, err := filepath.Match(patName, f) + checkerr(err) + if !ok { + continue + } + + if *repack { + pack(f, o) + } else { + unpack(f, o) + } + } +} + +func usage() { + _, _ = fmt.Fprintf(os.Stderr, "usage: %s [-x] [-r] r...mc{a,c} [outdir]\n", flag.Arg(0)) + os.Exit(1) +} + +// we use this function to check for laziness. Don't scold me >_< +func checkerr(err error) { + if err != nil { + _, _ = fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func unpack(f, o string) { var x, z int rn := filepath.Base(f) _, err := fmt.Sscanf(rn, "r.%d.%d.mca", &x, &z) @@ -81,24 +114,12 @@ func main() { } } -func usage() { - _, _ = fmt.Fprintf(os.Stderr, "usage: %s [-x] [-r] r...mca [outdir]\n", flag.Arg(0)) - os.Exit(1) -} - -func checkerr(err error) { - if err != nil { - _, _ = fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} - func pack(f, o string) { var x, z int rn := filepath.Base(f) _, err := fmt.Sscanf(rn, "c.%d.%d.mcc", &x, &z) if err != nil { - checkerr(fmt.Errorf("cannot use %s as mca file name: %v", rn, err)) + checkerr(fmt.Errorf("cannot use %s as mcc file name: %v", rn, err)) } fn := fmt.Sprintf("r.%d.%d.mca", x>>5, z>>5)