1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-28 19:29:53 +00:00

New --label-break option

git-svn-id: svn://svn.cc65.org/cc65/trunk@3699 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz 2006-01-27 19:36:33 +00:00
parent ceffc4e090
commit 7086da868b
6 changed files with 43 additions and 7 deletions

View File

@ -6,7 +6,7 @@
/* */ /* */
/* */ /* */
/* */ /* */
/* (C) 2000-2005 Ullrich von Bassewitz */ /* (C) 2000-2006 Ullrich von Bassewitz */
/* Römerstrasse 52 */ /* Römerstrasse 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
@ -69,6 +69,7 @@ unsigned Comments = 0; /* Add which comments to the output? */
/* Page formatting */ /* Page formatting */
unsigned PageLength = 0; /* Length of a listing page */ unsigned PageLength = 0; /* Length of a listing page */
unsigned LBreak = 7; /* Linefeed if labels exceed this limit */
unsigned MIndent = 9; /* Mnemonic indent */ unsigned MIndent = 9; /* Mnemonic indent */
unsigned AIndent = 17; /* Argument indent */ unsigned AIndent = 17; /* Argument indent */
unsigned CIndent = 49; /* Comment indent */ unsigned CIndent = 49; /* Comment indent */

View File

@ -6,7 +6,7 @@
/* */ /* */
/* */ /* */
/* */ /* */
/* (C) 2000-2005 Ullrich von Bassewitz */ /* (C) 2000-2006 Ullrich von Bassewitz */
/* Römerstrasse 52 */ /* Römerstrasse 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
@ -74,6 +74,7 @@ extern unsigned Comments; /* Add which comments to the output? */
#define MIN_PAGE_LEN 32 #define MIN_PAGE_LEN 32
#define MAX_PAGE_LEN 127 #define MAX_PAGE_LEN 127
extern unsigned PageLength; /* Length of a listing page */ extern unsigned PageLength; /* Length of a listing page */
extern unsigned LBreak; /* Linefeed if labels exceed this limit */
extern unsigned MIndent; /* Mnemonic indent */ extern unsigned MIndent; /* Mnemonic indent */
extern unsigned AIndent; /* Argument indent */ extern unsigned AIndent; /* Argument indent */
extern unsigned CIndent; /* Comment indent */ extern unsigned CIndent; /* Comment indent */

View File

@ -35,6 +35,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <limits.h>
#if defined(_MSC_VER) #if defined(_MSC_VER)
/* Microsoft compiler */ /* Microsoft compiler */
# include <io.h> # include <io.h>
@ -86,6 +87,7 @@ static void GlobalSection (void)
{ "INPUTNAME", INFOTOK_INPUTNAME }, { "INPUTNAME", INFOTOK_INPUTNAME },
{ "INPUTOFFS", INFOTOK_INPUTOFFS }, { "INPUTOFFS", INFOTOK_INPUTOFFS },
{ "INPUTSIZE", INFOTOK_INPUTSIZE }, { "INPUTSIZE", INFOTOK_INPUTSIZE },
{ "LABELBREAK", INFOTOK_LABELBREAK },
{ "OUTPUTNAME", INFOTOK_OUTPUTNAME }, { "OUTPUTNAME", INFOTOK_OUTPUTNAME },
{ "PAGELENGTH", INFOTOK_PAGELENGTH }, { "PAGELENGTH", INFOTOK_PAGELENGTH },
{ "STARTADDR", INFOTOK_STARTADDR }, { "STARTADDR", INFOTOK_STARTADDR },
@ -160,6 +162,14 @@ static void GlobalSection (void)
InfoNextTok (); InfoNextTok ();
break; break;
case INFOTOK_LABELBREAK:
InfoNextTok ();
InfoAssureInt ();
InfoRangeCheck (0, UCHAR_MAX);
LBreak = (unsigned char) InfoIVal;
InfoNextTok ();
break;
case INFOTOK_OUTPUTNAME: case INFOTOK_OUTPUTNAME:
InfoNextTok (); InfoNextTok ();
InfoAssureStr (); InfoAssureStr ();

View File

@ -6,7 +6,7 @@
/* */ /* */
/* */ /* */
/* */ /* */
/* (C) 1998-2005 Ullrich von Bassewitz */ /* (C) 1998-2006 Ullrich von Bassewitz */
/* Römerstrasse 52 */ /* Römerstrasse 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
@ -37,6 +37,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <ctype.h> #include <ctype.h>
#include <limits.h>
#include <time.h> #include <time.h>
/* common */ /* common */
@ -88,6 +89,7 @@ static void Usage (void)
" --help\t\tHelp (this text)\n" " --help\t\tHelp (this text)\n"
" --hexoffs\t\tUse hexadecimal label offsets\n" " --hexoffs\t\tUse hexadecimal label offsets\n"
" --info name\t\tSpecify an info file\n" " --info name\t\tSpecify an info file\n"
" --label-break n\tAdd newline if label exceeds length n\n"
" --pagelength n\tSet the page length for the listing\n" " --pagelength n\tSet the page length for the listing\n"
" --start-addr addr\tSet the start/load address\n" " --start-addr addr\tSet the start/load address\n"
" --verbose\t\tIncrease verbosity\n" " --verbose\t\tIncrease verbosity\n"
@ -198,6 +200,24 @@ static void OptInfo (const char* Opt attribute ((unused)), const char* Arg)
static void OptLabelBreak (const char* Opt, const char* Arg)
/* Handle the --label-break option */
{
/* Convert the argument to a number */
unsigned long Val = CvtNumber (Opt, Arg);
/* Check for a valid range */
if (Val >= UCHAR_MAX) {
Error ("Argument for %s out of valid range (%d)",
Opt, UCHAR_MAX);
}
/* Use the value */
LBreak = (unsigned char) Val;
}
static void OptPageLength (const char* Opt attribute ((unused)), const char* Arg) static void OptPageLength (const char* Opt attribute ((unused)), const char* Arg)
/* Handle the --pagelength option */ /* Handle the --pagelength option */
{ {
@ -392,6 +412,7 @@ int main (int argc, char* argv [])
{ "--help", 0, OptHelp }, { "--help", 0, OptHelp },
{ "--hexoffs", 0, OptHexOffs }, { "--hexoffs", 0, OptHexOffs },
{ "--info", 1, OptInfo }, { "--info", 1, OptInfo },
{ "--label-break", 1, OptLabelBreak },
{ "--pagelength", 1, OptPageLength }, { "--pagelength", 1, OptPageLength },
{ "--start-addr", 1, OptStartAddr }, { "--start-addr", 1, OptStartAddr },
{ "--verbose", 0, OptVerbose }, { "--verbose", 0, OptVerbose },

View File

@ -6,7 +6,7 @@
/* */ /* */
/* */ /* */
/* */ /* */
/* (C) 2000-2005 Ullrich von Bassewitz */ /* (C) 2000-2006 Ullrich von Bassewitz */
/* Römerstrasse 52 */ /* Römerstrasse 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
@ -166,8 +166,10 @@ void DefLabel (const char* Name)
/* Define a label with the given name */ /* Define a label with the given name */
{ {
Output ("%s:", Name); Output ("%s:", Name);
/* Don't start a new line if the label is fully in the left column */ /* If the label is longer than the configured maximum, or if it runs into
if (Col > MIndent) { * the opcode column, start a new line.
*/
if (Col > LBreak+2 || Col > MIndent) {
LineFeed (); LineFeed ();
} }
} }

View File

@ -6,7 +6,7 @@
/* */ /* */
/* */ /* */
/* */ /* */
/* (C) 2000-2005 Ullrich von Bassewitz */ /* (C) 2000-2006 Ullrich von Bassewitz */
/* Römerstrasse 52 */ /* Römerstrasse 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
@ -73,6 +73,7 @@ typedef enum token_t {
INFOTOK_INPUTNAME, INFOTOK_INPUTNAME,
INFOTOK_INPUTOFFS, INFOTOK_INPUTOFFS,
INFOTOK_INPUTSIZE, INFOTOK_INPUTSIZE,
INFOTOK_LABELBREAK,
INFOTOK_OUTPUTNAME, INFOTOK_OUTPUTNAME,
INFOTOK_PAGELENGTH, INFOTOK_PAGELENGTH,
INFOTOK_STARTADDR, INFOTOK_STARTADDR,