Move sed over to the generic llist_t for append. Saves about 90 bytes.
This commit is contained in:
parent
92d8b35594
commit
0b65628395
@ -116,11 +116,7 @@ static sed_cmd_t sed_cmd_head;
|
|||||||
static sed_cmd_t *sed_cmd_tail = &sed_cmd_head;
|
static sed_cmd_t *sed_cmd_tail = &sed_cmd_head;
|
||||||
|
|
||||||
/* Linked list of append lines */
|
/* Linked list of append lines */
|
||||||
struct append_list {
|
static llist_t *append_head=NULL;
|
||||||
char *string;
|
|
||||||
struct append_list *next;
|
|
||||||
};
|
|
||||||
static struct append_list *append_head=NULL, *append_tail=NULL;
|
|
||||||
|
|
||||||
void sed_free_and_close_stuff(void);
|
void sed_free_and_close_stuff(void);
|
||||||
#if ENABLE_FEATURE_CLEAN_UP
|
#if ENABLE_FEATURE_CLEAN_UP
|
||||||
@ -128,12 +124,7 @@ void sed_free_and_close_stuff(void)
|
|||||||
{
|
{
|
||||||
sed_cmd_t *sed_cmd = sed_cmd_head.next;
|
sed_cmd_t *sed_cmd = sed_cmd_head.next;
|
||||||
|
|
||||||
while(append_head) {
|
llist_free_contents(append_head);
|
||||||
append_tail=append_head->next;
|
|
||||||
free(append_head->string);
|
|
||||||
free(append_head);
|
|
||||||
append_head=append_tail;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (sed_cmd) {
|
while (sed_cmd) {
|
||||||
sed_cmd_t *sed_cmd_next = sed_cmd->next;
|
sed_cmd_t *sed_cmd_next = sed_cmd->next;
|
||||||
@ -691,28 +682,20 @@ static sed_cmd_t *branch_to(const char *label)
|
|||||||
bb_error_msg_and_die("Can't find label for jump to `%s'", label);
|
bb_error_msg_and_die("Can't find label for jump to `%s'", label);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Append copy of string to append buffer */
|
|
||||||
static void append(char *s)
|
static void append(char *s)
|
||||||
{
|
{
|
||||||
struct append_list *temp=calloc(1,sizeof(struct append_list));
|
append_head=llist_add_to_end(append_head, bb_xstrdup(s));
|
||||||
|
|
||||||
if(append_head)
|
|
||||||
append_tail=(append_tail->next=temp);
|
|
||||||
else append_head=append_tail=temp;
|
|
||||||
temp->string=strdup(s);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void flush_append(void)
|
static void flush_append(void)
|
||||||
{
|
{
|
||||||
|
char *data;
|
||||||
|
|
||||||
/* Output appended lines. */
|
/* Output appended lines. */
|
||||||
while(append_head) {
|
while((data = (char *)llist_pop(&append_head))) {
|
||||||
fprintf(nonstdout,"%s\n",append_head->string);
|
fprintf(nonstdout,"%s\n",data);
|
||||||
append_tail=append_head->next;
|
free(data);
|
||||||
free(append_head->string);
|
|
||||||
free(append_head);
|
|
||||||
append_head=append_tail;
|
|
||||||
}
|
}
|
||||||
append_head=append_tail=NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void add_input_file(FILE *file)
|
static void add_input_file(FILE *file)
|
||||||
@ -1113,8 +1096,7 @@ int sed_main(int argc, char **argv)
|
|||||||
int status = EXIT_SUCCESS, opt, getpat = 1;
|
int status = EXIT_SUCCESS, opt, getpat = 1;
|
||||||
|
|
||||||
/* destroy command strings on exit */
|
/* destroy command strings on exit */
|
||||||
if (ENABLE_FEATURE_CLEAN_UP && atexit(sed_free_and_close_stuff) == -1)
|
if (ENABLE_FEATURE_CLEAN_UP) atexit(sed_free_and_close_stuff);
|
||||||
bb_perror_msg_and_die("atexit");
|
|
||||||
|
|
||||||
/* Lie to autoconf when it starts asking stupid questions. */
|
/* Lie to autoconf when it starts asking stupid questions. */
|
||||||
if(argc==2 && !strcmp(argv[1],"--version")) {
|
if(argc==2 && !strcmp(argv[1],"--version")) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user