ROBOhdrs/insertHeaders [ Functions ]
NAME
insertHeaders
SYNOPSIS
* static void insertHeaders(ctags_t *e, char *project, char *dstpath, char *srcpath)
SOURCE
static void insertHeaders( ctags_t * e, char *project, char *dstpath, char *srcpath ) { FILE *ifp, *ofp; ctag_t *ctag = e->ctag; int lnum = 0, funcline = 0; char buf[MAXLINE], *funcname = 0; if ( !ctag || !dstpath || !srcpath ) { return; } assert( ofp = fopen( dstpath, "w" ) ); assert( ifp = fopen( srcpath, "r" ) ); /* include file header only if project name is defined */ if ( project ) { roboFileHeader( ofp, project, dstpath ); } while ( fgets( buf, MAXLINE, ifp ) != NULL ) { lnum++; while ( ctag->prev ) { ctag = ctag->prev; } for ( ;; ) { if ( incSrc && funcline && lnum >= funcline && ctag->linenum == lnum ) { funcline = 0; insertSrcEnd( ofp, funcname ); } if ( ctag->linenum == lnum ) { if ( typeOk( ctag->type ) ) { roboHeader( ofp, ctag->fname, ctag->name, ctag->type, ctag->decl ); funcline = lnum; funcname = ctag->name; } break; } else if ( ctag->next ) { ctag = ctag->next; } else { break; } } /* end ctag loop */ fprintf( ofp, "%s", buf ); } if ( incSrc && funcline ) { insertSrcEnd( ofp, funcname ); } fclose( ifp ); fclose( ofp ); }