From owner-p4-projects@FreeBSD.ORG Tue Jun 23 08:33:24 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 53FF01065679; Tue, 23 Jun 2009 08:33:24 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 135751065677 for ; Tue, 23 Jun 2009 08:33:24 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 007728FC32 for ; Tue, 23 Jun 2009 08:33:24 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n5N8XNEo058663 for ; Tue, 23 Jun 2009 08:33:23 GMT (envelope-from gabor@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n5N8XNFr058661 for perforce@freebsd.org; Tue, 23 Jun 2009 08:33:23 GMT (envelope-from gabor@freebsd.org) Date: Tue, 23 Jun 2009 08:33:23 GMT Message-Id: <200906230833.n5N8XNFr058661@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gabor@freebsd.org using -f From: Gabor Kovesdan To: Perforce Change Reviews Cc: Subject: PERFORCE change 164945 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Jun 2009 08:33:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=164945 Change 164945 by gabor@gabor_server on 2009/06/23 08:33:12 - style(9) Affected files ... .. //depot/projects/soc2008/gabor_textproc/dc/bcode.c#4 edit .. //depot/projects/soc2008/gabor_textproc/dc/bcode.h#4 edit .. //depot/projects/soc2008/gabor_textproc/dc/dc.c#4 edit .. //depot/projects/soc2008/gabor_textproc/dc/extern.h#3 edit .. //depot/projects/soc2008/gabor_textproc/dc/inout.c#4 edit .. //depot/projects/soc2008/gabor_textproc/dc/mem.c#3 edit .. //depot/projects/soc2008/gabor_textproc/dc/stack.c#4 edit Differences ... ==== //depot/projects/soc2008/gabor_textproc/dc/bcode.c#4 (text+ko) ==== @@ -31,8 +31,6 @@ BIGNUM zero; -/* #define DEBUGGING */ - #define __inline #define MAX_ARRAY_INDEX 2048 @@ -56,8 +54,8 @@ size_t readstack_sz; }; -static struct bmachine bmachine; -static void sighandler(int); +static struct bmachine bmachine; +static void sighandler(int); static __inline int readch(void); static __inline void unreadch(void); @@ -238,7 +236,7 @@ void init_bmachine(bool extended_registers) { - unsigned int i; + unsigned int i; bmachine.extended_regs = extended_registers; bmachine.reg_array_size = bmachine.extended_regs ? @@ -282,7 +280,7 @@ static __inline int readch(void) { - struct source *src = &bmachine.readstack[bmachine.readsp]; + struct source *src = &bmachine.readstack[bmachine.readsp]; return (src->vtable->readchar(src)); } @@ -290,7 +288,7 @@ static __inline void unreadch(void) { - struct source *src = &bmachine.readstack[bmachine.readsp]; + struct source *src = &bmachine.readstack[bmachine.readsp]; src->vtable->unreadchar(src); } @@ -298,7 +296,7 @@ static __inline char * readline(void) { - struct source *src = &bmachine.readstack[bmachine.readsp]; + struct source *src = &bmachine.readstack[bmachine.readsp]; return (src->vtable->readline(src)); } @@ -306,7 +304,7 @@ static __inline void src_free(void) { - struct source *src = &bmachine.readstack[bmachine.readsp]; + struct source *src = &bmachine.readstack[bmachine.readsp]; src->vtable->free(src); } @@ -315,7 +313,8 @@ void pn(const char *str, const struct number *n) { - char *p = BN_bn2dec(n->number); + char *p = BN_bn2dec(n->number); + if (p == NULL) err(1, "BN_bn2dec failed"); fputs(str, stderr); @@ -326,7 +325,8 @@ void pbn(const char *str, const BIGNUM *n) { - char *p = BN_bn2dec(n); + char *p = BN_bn2dec(n); + if (p == NULL) err(1, "BN_bn2dec failed"); fputs(str, stderr); @@ -351,7 +351,7 @@ void scale_number(BIGNUM *n, int s) { - unsigned int abs_scale; + unsigned int abs_scale; if (s == 0) return; @@ -364,8 +364,8 @@ else BN_div_word(n, factors[abs_scale]); } else { - BIGNUM *a, *p; - BN_CTX *ctx; + BIGNUM *a, *p; + BN_CTX *ctx; a = BN_new(); bn_checkp(a); @@ -390,7 +390,7 @@ void split_number(const struct number *n, BIGNUM *i, BIGNUM *f) { - u_long rem; + u_long rem; bn_checkp(BN_copy(i, n->number)); @@ -401,8 +401,8 @@ if (f != NULL) bn_check(BN_set_word(f, rem)); } else { - BIGNUM *a, *p; - BN_CTX *ctx; + BIGNUM *a, *p; + BN_CTX *ctx; a = BN_new(); bn_checkp(a); @@ -510,7 +510,8 @@ static __inline void print_tos(void) { - struct value *value = tos(); + struct value *value = tos(); + if (value != NULL) { print_value(stdout, value, "", bmachine.obase); putchar('\n'); @@ -522,7 +523,7 @@ static void pop_print(void) { - struct value *value = pop(); + struct value *value = pop(); if (value != NULL) { switch (value->type) { @@ -545,7 +546,7 @@ static void pop_printn(void) { - struct value *value = pop(); + struct value *value = pop(); if (value != NULL) { print_value(stdout, value, "", bmachine.obase); @@ -571,7 +572,7 @@ static void drop(void) { - struct value *v = pop(); + struct value *v = pop(); if (v != NULL) stack_free_value(v); } @@ -590,7 +591,7 @@ set_scale(void) { struct number *n; - u_long scale; + u_long scale; n = pop_number(); if (n != NULL) { @@ -621,7 +622,7 @@ set_obase(void) { struct number *n; - u_long base; + u_long base; n = pop_number(); if (n != NULL) { @@ -637,7 +638,7 @@ static void get_ibase(void) { - struct number *n; + struct number *n; n = new_number(); bn_check(BN_set_word(n->number, bmachine.ibase)); @@ -1215,8 +1216,8 @@ scale = bmachine.scale; } else { /* Posix bc says min(a.scale * b, max(a.scale, scale) */ - u_long b; - u_int m; + u_long b; + u_int m; b = BN_get_word(p->number); m = max(a->scale, bmachine.scale); @@ -1357,7 +1358,7 @@ static void equal_numbers(void) { - struct number *a, *b, *r; + struct number *a, *b, *r; a = pop_number(); if (a == NULL) { @@ -1377,7 +1378,7 @@ static void less_numbers(void) { - struct number *a, *b, *r; + struct number *a, *b, *r; a = pop_number(); if (a == NULL) { @@ -1397,7 +1398,7 @@ static void lesseq_numbers(void) { - struct number *a, *b, *r; + struct number *a, *b, *r; a = pop_number(); if (a == NULL) { ==== //depot/projects/soc2008/gabor_textproc/dc/bcode.h#4 (text+ko) ==== @@ -22,7 +22,7 @@ struct number { BIGNUM *number; - u_int scale; + u_int scale; }; enum stacktype { @@ -48,18 +48,18 @@ char *string; } u; struct array *array; - enum stacktype type; + enum stacktype type; }; struct array { struct value *data; - size_t size; + size_t size; }; struct stack { struct value *stack; - ssize_t sp; - ssize_t size; + ssize_t sp; + ssize_t size; }; struct source; @@ -74,25 +74,25 @@ struct source { struct vtable *vtable; union { - FILE *stream; + FILE *stream; struct { - u_char *buf; - size_t pos; + u_char *buf; + size_t pos; } string; } u; - int lastchar; + int lastchar; }; -void init_bmachine(bool); -void reset_bmachine(struct source *); -void scale_number(BIGNUM *, int); -void normalize(struct number *, u_int); -void eval(void); -void pn(const char *, const struct number *); -void pbn(const char *, const BIGNUM *); -void negate(struct number *); -void split_number(const struct number *, BIGNUM *, BIGNUM *); -void bmul_number(struct number *, struct number *, +void init_bmachine(bool); +void reset_bmachine(struct source *); +void scale_number(BIGNUM *, int); +void normalize(struct number *, u_int); +void eval(void); +void pn(const char *, const struct number *); +void pbn(const char *, const BIGNUM *); +void negate(struct number *); +void split_number(const struct number *, BIGNUM *, BIGNUM *); +void bmul_number(struct number *, struct number *, struct number *); -extern BIGNUM zero; +extern BIGNUM zero; ==== //depot/projects/soc2008/gabor_textproc/dc/dc.c#4 (text+ko) ==== @@ -35,7 +35,7 @@ #define DC_VER "1.3-FreeBSD" -static void usage(void); +static void usage(void); extern char *__progname; @@ -80,10 +80,10 @@ int main(int argc, char *argv[]) { - int ch; - bool extended_regs = false; + int ch; + bool extended_regs = false; char *buf; - bool preproc_done = false; + bool preproc_done = false; if ((buf = strdup("")) == NULL) err(1, NULL); ==== //depot/projects/soc2008/gabor_textproc/dc/extern.h#3 (text+ko) ==== @@ -22,42 +22,42 @@ /* inout.c */ -void src_setstream(struct source *, FILE *); -void src_setstring(struct source *, char *); +void src_setstream(struct source *, FILE *); +void src_setstring(struct source *, char *); struct number *readnumber(struct source *, u_int); -void printnumber(FILE *, const struct number *, u_int); +void printnumber(FILE *, const struct number *, u_int); char *read_string(struct source *); -void print_value(FILE *, const struct value *, const char *, u_int); -void print_ascii(FILE *, const struct number *); +void print_value(FILE *, const struct value *, const char *, u_int); +void print_ascii(FILE *, const struct number *); /* mem.c */ struct number *new_number(void); -void free_number(struct number *); +void free_number(struct number *); struct number *dup_number(const struct number *); void *bmalloc(size_t); void *brealloc(void *, size_t); char *bstrdup(const char *p); -void bn_check(int); -void bn_checkp(const void *); +void bn_check(int); +void bn_checkp(const void *); /* stack.c */ -void stack_init(struct stack *); -void stack_free_value(struct value *); +void stack_init(struct stack *); +void stack_free_value(struct value *); struct value *stack_dup_value(const struct value *, struct value *); -void stack_swap(struct stack *); -size_t stack_size(const struct stack *); -void stack_dup(struct stack *); -void stack_pushnumber(struct stack *, struct number *); -void stack_pushstring(struct stack *stack, char *); -void stack_push(struct stack *, struct value *); -void stack_set_tos(struct stack *, struct value *); +void stack_swap(struct stack *); +size_t stack_size(const struct stack *); +void stack_dup(struct stack *); +void stack_pushnumber(struct stack *, struct number *); +void stack_pushstring(struct stack *stack, char *); +void stack_push(struct stack *, struct value *); +void stack_set_tos(struct stack *, struct value *); struct value *stack_tos(const struct stack *); struct value *stack_pop(struct stack *); struct number *stack_popnumber(struct stack *); -char * stack_popstring(struct stack *); -void stack_clear(struct stack *); -void stack_print(FILE *, const struct stack *, const char *, +char *stack_popstring(struct stack *); +void stack_clear(struct stack *); +void stack_print(FILE *, const struct stack *, const char *, u_int base); -void frame_assign(struct stack *, size_t, const struct value *); -struct value * frame_retrieve(const struct stack *, size_t); -/* void frame_free(struct stack *); */ +void frame_assign(struct stack *, size_t, const struct value *); +struct value *frame_retrieve(const struct stack *, size_t); +/* void frame_free(struct stack *); */ ==== //depot/projects/soc2008/gabor_textproc/dc/inout.c#4 (text+ko) ==== @@ -28,19 +28,19 @@ #define MAX_CHARS_PER_LINE 68 -static int lastchar; -static int charcount; +static int lastchar; +static int charcount; -static int src_getcharstream(struct source *); -static void src_ungetcharstream(struct source *); +static int src_getcharstream(struct source *); +static void src_ungetcharstream(struct source *); static char *src_getlinestream(struct source *); -static int src_getcharstring(struct source *); -static void src_ungetcharstring(struct source *); +static int src_getcharstring(struct source *); +static void src_ungetcharstring(struct source *); static char *src_getlinestring(struct source *); -static void src_freestring(struct source *); -static void flushwrap(FILE *); -static void putcharwrap(FILE *, int); -static void printwrap(FILE *, const char *); +static void src_freestring(struct source *); +static void flushwrap(FILE *); +static void putcharwrap(FILE *, int); +static void printwrap(FILE *, const char *); static char *get_digit(u_long, int, u_int); static struct vtable stream_vtable = { @@ -60,6 +60,7 @@ void src_setstream(struct source *src, FILE *stream) { + src->u.stream = stream; src->vtable = &stream_vtable; } @@ -67,6 +68,7 @@ void src_setstring(struct source *src, char *p) { + src->u.string.buf = (u_char *)p; src->u.string.pos = 0; src->vtable = &string_vtable; @@ -75,40 +77,44 @@ static int src_getcharstream(struct source *src) { - return src->lastchar = getc(src->u.stream); + + return (src->lastchar = getc(src->u.stream)); } static void src_ungetcharstream(struct source *src) { + ungetc(src->lastchar, src->u.stream); } static char * src_getlinestream(struct source *src) { - char buf[BUFSIZ]; + char buf[BUFSIZ]; if (fgets(buf, BUFSIZ, src->u.stream) == NULL) - return bstrdup(""); + return (bstrdup("")); return bstrdup(buf); } static int src_getcharstring(struct source *src) { + src->lastchar = src->u.string.buf[src->u.string.pos]; if (src->lastchar == '\0') - return EOF; + return (EOF); else { src->u.string.pos++; - return src->lastchar; + return (src->lastchar); } } static void src_ungetcharstring(struct source *src) { + if (src->u.string.pos > 0) { if (src->lastchar != '\0') --src->u.string.pos; @@ -118,8 +124,8 @@ static char * src_getlinestring(struct source *src) { - char buf[BUFSIZ]; - int ch, i; + char buf[BUFSIZ]; + int ch, i; i = 0; while (i < BUFSIZ-1) { @@ -131,18 +137,20 @@ break; } buf[i] = '\0'; - return bstrdup(buf); + return (bstrdup(buf)); } static void src_freestring(struct source *src) { + free(src->u.string.buf); } static void flushwrap(FILE *f) { + if (lastchar != -1) putc(lastchar, f); } @@ -150,6 +158,7 @@ static void putcharwrap(FILE *f, int ch) { + if (charcount >= MAX_CHARS_PER_LINE) { charcount = 0; fputs("\\\n", f); @@ -164,7 +173,7 @@ static void printwrap(FILE *f, const char *p) { - char buf[12]; + char buf[12]; char *q = buf; strlcpy(buf, p, sizeof(buf)); @@ -176,11 +185,11 @@ readnumber(struct source *src, u_int base) { struct number *n; - int ch; - bool sign = false; - bool dot = false; - BN_ULONG v; - u_int i; + int ch; + bool sign = false; + bool dot = false; + BN_ULONG v; + u_int i; n = new_number(); bn_check(BN_zero(n->number)); @@ -221,15 +230,15 @@ } if (sign) negate(n); - return n; + return (n); } char * read_string(struct source *src) { - int count, i, sz, new_sz, ch; - char *p; - bool escape; + int count, i, sz, new_sz, ch; + char *p; + bool escape; escape = false; count = 1; @@ -259,13 +268,13 @@ } } p[i] = '\0'; - return p; + return (p); } static char * get_digit(u_long num, int digits, u_int base) { - char *p; + char *p; if (base <= 16) { p = bmalloc(2); @@ -275,18 +284,18 @@ if (asprintf(&p, "%0*lu", digits, num) == -1) err(1, NULL); } - return p; + return (p); } void printnumber(FILE *f, const struct number *b, u_int base) { struct number *int_part, *fract_part; - int digits; - char buf[11]; - size_t sz; - unsigned int i; - struct stack stack; + int digits; + char buf[11]; + size_t sz; + unsigned int i; + struct stack stack; char *p; charcount = 0; @@ -325,7 +334,7 @@ stack_clear(&stack); if (b->scale > 0) { struct number *num_base; - BIGNUM mult, stop; + BIGNUM mult, stop; putcharwrap(f, '.'); num_base = new_number(); @@ -338,7 +347,7 @@ i = 0; while (BN_cmp(&mult, &stop) < 0) { - u_long rem; + u_long rem; if (i && base > 16) putcharwrap(f, ' '); @@ -368,6 +377,7 @@ void print_value(FILE *f, const struct value *value, const char *prefix, u_int base) { + fputs(prefix, f); switch (value->type) { case BCODE_NONE: @@ -386,8 +396,8 @@ void print_ascii(FILE *f, const struct number *n) { - BIGNUM *v; - int numbits, i, ch; + BIGNUM *v; + int numbits, i, ch; v = BN_dup(n->number); bn_checkp(v); ==== //depot/projects/soc2008/gabor_textproc/dc/mem.c#3 (text+ko) ==== @@ -30,19 +30,20 @@ struct number * new_number(void) { - struct number *n; + struct number *n; n = bmalloc(sizeof(*n)); n->scale = 0; n->number = BN_new(); if (n->number == NULL) err(1, NULL); - return n; + return (n); } void free_number(struct number *n) { + BN_free(n->number); free(n); } @@ -50,51 +51,52 @@ struct number * dup_number(const struct number *a) { - struct number *n; + struct number *n; n = bmalloc(sizeof(*n)); n->scale = a->scale; n->number = BN_dup(a->number); bn_checkp(n->number); - return n; + return (n); } void * bmalloc(size_t sz) { - void *p; + void *p; p = malloc(sz); if (p == NULL) err(1, NULL); - return p; + return (p); } void * brealloc(void *p, size_t sz) { - void *q; + void *q; q = realloc(p, sz); if (q == NULL) err(1, NULL); - return q; + return (q); } char * bstrdup(const char *p) { - char *q; + char *q; q = strdup(p); if (q == NULL) err(1, NULL); - return q; + return (q); } void bn_check(int x) \ { + if (x == 0) err(1, "big number failure %lx", ERR_get_error()); } @@ -102,6 +104,7 @@ void bn_checkp(const void *p) \ { + if (p == NULL) err(1, "allocation failure %lx", ERR_get_error()); } ==== //depot/projects/soc2008/gabor_textproc/dc/stack.c#4 (text+ko) ==== @@ -25,18 +25,19 @@ #include "extern.h" -static __inline bool stack_empty(const struct stack *); -static void stack_grow(struct stack *); +static __inline bool stack_empty(const struct stack *); +static void stack_grow(struct stack *); static struct array *array_new(void); -static __inline void array_free(struct array *); -static struct array * array_dup(const struct array *); -static __inline void array_grow(struct array *, size_t); -static __inline void array_assign(struct array *, size_t, const struct value *); +static __inline void array_free(struct array *); +static struct array *array_dup(const struct array *); +static __inline void array_grow(struct array *, size_t); +static __inline void array_assign(struct array *, size_t, const struct value *); static __inline struct value *array_retrieve(const struct array *, size_t); void stack_init(struct stack *stack) { + stack->size = 0; stack->sp = -1; stack->stack = NULL; @@ -45,7 +46,8 @@ static __inline bool stack_empty(const struct stack *stack) { - bool empty = stack->sp == -1; + bool empty = stack->sp == -1; + if (empty) warnx("stack empty"); return empty; @@ -55,6 +57,7 @@ void stack_free_value(struct value *v) { + switch (v->type) { case BCODE_NONE: break; @@ -75,6 +78,7 @@ struct value * stack_dup_value(const struct value *a, struct value *copy) { + copy->type = a->type; switch (a->type) { @@ -92,20 +96,21 @@ copy->array = a->array == NULL ? NULL : array_dup(a->array); - return copy; + return (copy); } size_t stack_size(const struct stack *stack) { - return stack->sp + 1; + + return (stack->sp + 1); } void stack_dup(struct stack *stack) { struct value *value; - struct value copy; + struct value copy; value = stack_tos(stack); if (value == NULL) { @@ -118,7 +123,7 @@ void stack_swap(struct stack *stack) { - struct value copy; + struct value copy; if (stack->sp < 1) { warnx("stack empty"); @@ -132,7 +137,7 @@ static void stack_grow(struct stack *stack) { - size_t new_size, i; + size_t new_size, i; if (++stack->sp == stack->size) { new_size = stack->size * 2 + 1; @@ -147,6 +152,7 @@ void stack_pushnumber(struct stack *stack, struct number *b) { + stack_grow(stack); stack->stack[stack->sp].type = BCODE_NUMBER; stack->stack[stack->sp].u.num = b; @@ -155,6 +161,7 @@ void stack_pushstring(struct stack *stack, char *string) { + stack_grow(stack); stack->stack[stack->sp].type = BCODE_STRING; stack->stack[stack->sp].u.string = string; @@ -163,6 +170,7 @@ void stack_push(struct stack *stack, struct value *v) { + switch (v->type) { case BCODE_NONE: stack_grow(stack); @@ -182,14 +190,16 @@ struct value * stack_tos(const struct stack *stack) { + if (stack->sp == -1) - return NULL; + return (NULL); return &stack->stack[stack->sp]; } void stack_set_tos(struct stack *stack, struct value *v) { + if (stack->sp == -1) stack_push(stack, v); else { @@ -203,23 +213,25 @@ struct value * stack_pop(struct stack *stack) { + if (stack_empty(stack)) - return NULL; + return (NULL); return &stack->stack[stack->sp--]; } struct number * stack_popnumber(struct stack *stack) { + if (stack_empty(stack)) - return NULL; + return (NULL); if (stack->stack[stack->sp].array != NULL) { array_free(stack->stack[stack->sp].array); stack->stack[stack->sp].array = NULL; } if (stack->stack[stack->sp].type != BCODE_NUMBER) { warnx("not a number"); /* XXX remove */ - return NULL; + return (NULL); } return stack->stack[stack->sp--].u.num; } @@ -227,15 +239,16 @@ char * stack_popstring(struct stack *stack) { + if (stack_empty(stack)) - return NULL; + return (NULL); if (stack->stack[stack->sp].array != NULL) { array_free(stack->stack[stack->sp].array); stack->stack[stack->sp].array = NULL; } if (stack->stack[stack->sp].type != BCODE_STRING) { warnx("not a string"); /* XXX remove */ - return NULL; + return (NULL); } return stack->stack[stack->sp--].u.string; } @@ -243,6 +256,7 @@ void stack_clear(struct stack *stack) { + while (stack->sp >= 0) { stack_free_value(&stack->stack[stack->sp--]); } @@ -253,7 +267,7 @@ void stack_print(FILE *f, const struct stack *stack, const char *prefix, u_int base) { - ssize_t i; + ssize_t i; for (i = stack->sp; i >= 0; i--) { print_value(f, &stack->stack[i], prefix, base); @@ -265,7 +279,7 @@ static struct array * array_new(void) { - struct array *a; + struct array *a; a = bmalloc(sizeof(*a)); a->data = NULL; @@ -276,7 +290,7 @@ static __inline void array_free(struct array *a) { - size_t i; + size_t i; if (a == NULL) return; @@ -290,21 +304,21 @@ array_dup(const struct array *a) >>> TRUNCATED FOR MAIL (1000 lines) <<<