From b44d57482b1fe0c17febceb05df3e9e840065a3a Mon Sep 17 00:00:00 2001 From: Mikael Pettersson Date: Sat, 9 Sep 2023 20:05:47 +0200 Subject: [PATCH] ar: emulate ranlib when invoked as ranlib --- erlang/apps/ar/src/ar.app.src | 2 +- erlang/apps/ar/src/ar.erl | 25 ++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/erlang/apps/ar/src/ar.app.src b/erlang/apps/ar/src/ar.app.src index 5bdbcf5..4501704 100644 --- a/erlang/apps/ar/src/ar.app.src +++ b/erlang/apps/ar/src/ar.app.src @@ -16,7 +16,7 @@ %%% along with pdp10-tools. If not, see . {application, ar, - [{description, "'ar' for pdp10-elf"}, + [{description, "'ar' and 'ranlib' for pdp10-elf"}, {vsn, "0.1.0"}, {registered, []}, {applications, [kernel, stdlib, lib]}, diff --git a/erlang/apps/ar/src/ar.erl b/erlang/apps/ar/src/ar.erl index 0bff48f..5b9588e 100644 --- a/erlang/apps/ar/src/ar.erl +++ b/erlang/apps/ar/src/ar.erl @@ -1,6 +1,6 @@ %%% -*- erlang-indent-level: 2 -*- %%% -%%% 'ar' for pdp10-elf +%%% 'ar' and 'ranlib' for pdp10-elf %%% Copyright (C) 2013-2023 Mikael Pettersson %%% %%% This file is part of pdp10-tools. @@ -41,6 +41,29 @@ -spec main([string()]) -> no_return(). main(Argv) -> + Progname = escript_runtime:progname(), + case string:find(Progname, "ranlib") of + nomatch -> main_ar(Argv); + _ -> main_ranlib(Argv) + end. + +-spec main_ranlib([string()]) -> no_return(). +main_ranlib(Argv) -> + %% In ranlib emulation mode we do not accept any options. + case Argv of + [[C | _] = Archive] when C =/= $- -> main_ar(["-s", Archive]); + _ -> usage_ranlib() + end. + +usage_ranlib() -> + Progname = escript_runtime:progname(), + escript_runtime:fmterr( + "Usage: ~s \n", + [Progname]), + halt(1). + +-spec main_ar([string()]) -> no_return(). +main_ar(Argv) -> case parse_argv(Argv) of {ok, {Opts, ArchiveFile, Files}} -> ar(Opts, ArchiveFile, Files),