aboutsummaryrefslogtreecommitdiff
path: root/renumbas.c
diff options
context:
space:
mode:
authorB. Watson <urchlay@slackware.uk>2024-06-22 15:02:49 -0400
committerB. Watson <urchlay@slackware.uk>2024-06-22 15:02:56 -0400
commit1185226bef2131f4216676d298e7c4e724e8a9bd (patch)
tree618203419a342c8576d8cde720b7e5ba819509e5 /renumbas.c
parente40fe3585d07a6b8beee0dddf7d3d1defa3cf140 (diff)
downloadbw-atari8-tools-1185226bef2131f4216676d298e7c4e724e8a9bd.tar.gz
renumbas: add *useless* -b option (just for shiggles).
Diffstat (limited to 'renumbas.c')
-rw-r--r--renumbas.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/renumbas.c b/renumbas.c
index 62a4f07..6f4f51e 100644
--- a/renumbas.c
+++ b/renumbas.c
@@ -13,6 +13,7 @@ unsigned short startlineno = 10;
unsigned short increment = 10;
unsigned short limit = 0;
unsigned short newno;
+int backwards = 0;
void print_help(void) {
printf("Usage: %s [-v] [-s start-lineno] [-i increment] [-f first-lineno] <inputfile> <outputfile>\n", self);
@@ -20,6 +21,7 @@ void print_help(void) {
printf(" -s <num>: Starting line number (default: 10).\n");
printf(" -i <num>: Increment (default: 10).\n");
printf(" -f <num>: Don't renumber lines less than <num> (default: 0).\n");
+ printf(" -b: Number backwards (creates invalid program).\n");
}
unsigned short getlineno(char opt, const char *arg) {
@@ -46,9 +48,10 @@ unsigned short getlineno(char opt, const char *arg) {
void parse_args(int argc, char **argv) {
int opt;
- while( (opt = getopt(argc, argv, "vs:i:f:")) != -1) {
+ while( (opt = getopt(argc, argv, "vbs:i:f:")) != -1) {
switch(opt) {
- case 'v': verbose = 1; break;
+ case 'v': verbose = 1; break;
+ case 'b': backwards = 1; break;
case 's': startlineno = getlineno(opt, optarg); break;
case 'i': increment = getlineno(opt, optarg); break;
case 'f': limit = getlineno(opt, optarg); break;
@@ -86,7 +89,17 @@ CALLBACK(renumber_line) {
for(i = 0; i < refcounts[lineno]; i++)
memmove(program + linerefs[lineno][i].pos, fpnewno, 6);
setword(pos, newno);
- newno += increment;
+
+ if(backwards) {
+ if(newno < increment) {
+ fprintf(stderr, "%s: Fatal: New line number %d would be <0.\n", self, newno);
+ exit(1);
+ } else {
+ newno -= increment;
+ }
+ } else {
+ newno += increment;
+ }
}
void check_refs(void) {