OTWO-1213 Works around lost encoding in Ruby/C binding layer
[ohcount] / test / expected_dir / limbo.b
1 limbo   code    implement HgReadrevlog;
2 limbo   blank   
3 limbo   code    include "sys.m";
4 limbo   code            sys: Sys;
5 limbo   code            sprint: import sys;
6 limbo   code    include "draw.m";
7 limbo   code    include "arg.m";
8 limbo   code    include "string.m";
9 limbo   code            str: String;
10 limbo   code    include "mercurial.m";
11 limbo   code            mercurial: Mercurial;
12 limbo   code            Revlog, Repo, Entry, Nodeid, Change: import mercurial;
13 limbo   blank   
14 limbo   code    dflag: int;
15 limbo   blank   
16 limbo   code    HgReadrevlog: module {
17 limbo   code            init:   fn(nil: ref Draw->Context, args: list of string);
18 limbo   code    };
19 limbo   blank   
20 limbo   code    init(nil: ref Draw->Context, args: list of string)
21 limbo   code    {
22 limbo   code            sys = load Sys Sys->PATH;
23 limbo   code            arg := load Arg Arg->PATH;
24 limbo   code            str = load String String->PATH;
25 limbo   code            mercurial = load Mercurial Mercurial->PATH;
26 limbo   code            mercurial->init();
27 limbo   blank   
28 limbo   code            arg->init(args);
29 limbo   code            arg->setusage(arg->progname()+" [-d] path");
30 limbo   code            while((c := arg->opt()) != 0)
31 limbo   code                    case c {
32 limbo   code                    'd' =>  dflag++;
33 limbo   code                            if(dflag > 1)
34 limbo   code                                    mercurial->debug++;
35 limbo   code                    * =>    arg->usage();
36 limbo   code                    }
37 limbo   code            args = arg->argv();
38 limbo   code            if(len args != 1)
39 limbo   code                    arg->usage();
40 limbo   code            path := hd args;
41 limbo   blank   
42 limbo   code            (rl, err) := Revlog.open(path);
43 limbo   code            if(err != nil)
44 limbo   code                    fail(err);
45 limbo   blank   
46 limbo   code            last: int;
47 limbo   code            (last, err) = rl.lastrev();
48 limbo   code            if(err != nil)
49 limbo   code                    fail(err);
50 limbo   blank   
51 limbo   code            e: ref Entry;
52 limbo   code            for(i := 0; i <= last; i++) {
53 limbo   code                    (e, err) = rl.findrev(i);
54 limbo   code                    if(err != nil)
55 limbo   code                            fail(err);
56 limbo   comment                 #sys->print("entry %d:\n", i);
57 limbo   code                    sys->print("%s\n", e.text());
58 limbo   code            }
59 limbo   code    }
60 limbo   blank   
61 limbo   code    fail(s: string)
62 limbo   code    {
63 limbo   code            sys->fprint(sys->fildes(2), "%s\n", s);
64 limbo   code            raise "fail:"+s;
65 limbo   code    }