| 1 | from __future__ import print_function
|
| 2 | """
|
| 3 | readlink.py - Minimal implementation of readlink -f, e.g. for OS X.
|
| 4 | """
|
| 5 |
|
| 6 | import libc
|
| 7 | from frontend import args
|
| 8 | from frontend import flag_spec
|
| 9 | from mycpp.mylib import print_stderr
|
| 10 |
|
| 11 | from typing import List
|
| 12 |
|
| 13 | SPEC = flag_spec.FlagSpec('readlink')
|
| 14 | SPEC.ShortFlag('-f')
|
| 15 |
|
| 16 |
|
| 17 | def main(argv):
|
| 18 | # type: (List[str]) -> int
|
| 19 | arg_r = args.Reader(argv)
|
| 20 | arg_r.Next() # skip argv[0]
|
| 21 | arg = args.Parse(SPEC, arg_r)
|
| 22 |
|
| 23 | if not arg.f:
|
| 24 | print_stderr("readlink: -f must be passed")
|
| 25 | return 1
|
| 26 | for path in arg_r.Rest():
|
| 27 | res = libc.realpath(path)
|
| 28 | if res is None:
|
| 29 | return 1
|
| 30 | print(res)
|
| 31 | return 0
|