1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
//
// srecord - manipulate eprom load files
// Copyright (C) 1998, 1999, 2002, 2006-2008, 2010 Peter Miller
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see
// <http://www.gnu.org/licenses/>.
//
#include <cstring>
#include <srecord/progname.h>
static char *progname;
void
srecord::progname_set(char *s)
{
for (;;)
{
char *cp1;
char *cp2;
cp1 = strrchr(s, '/');
if (!cp1)
cp1 = s;
else
{
if (!cp1[1])
{
*cp1 = 0;
continue;
}
++cp1;
}
cp2 = strrchr(s, '\\');
if (!cp2)
cp2 = s;
else
{
if (!cp2[1])
{
*cp2 = 0;
continue;
}
++cp2;
}
progname = (cp1 > cp2 ? cp1 : cp2);
// avoid some libtool nonsense
if (0 == memcmp(progname, "lt-", 3))
progname += 3;
size_t len = strlen(progname);
if
(
progname[len - 4] == '.'
&&
(progname[len - 3] == 'e' || progname[len - 3] == 'E')
&&
(progname[len - 2] == 'x' || progname[len - 2] == 'X')
&&
(progname[len - 1] == 'e' || progname[len - 1] == 'E')
)
progname[len - 4] = '\0';
return;
}
}
const char *
srecord::progname_get()
{
return (progname ? progname : "???");
}
|