From d9d66c1c907b8dacddb7818d212d40a2e51e067b Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Wed, 26 Apr 2023 23:00:20 +0200 Subject: [PATCH] removed redundant skip_dir(...) (use get_cell(..., 0) ), fix a couple of glitches in postscript export (filled polygons with self-coincident edgs, fix filled arc pies (missing point) --- src/actions.c | 4 ++-- src/main.c | 4 ++-- src/psprint.c | 5 +++-- src/scheduler.c | 12 ++++++------ src/spice_netlist.c | 16 ++++++++-------- src/tedax_netlist.c | 8 ++++---- src/token.c | 12 ++++-------- src/verilog_netlist.c | 16 ++++++++-------- src/vhdl_netlist.c | 32 ++++++++++++++++---------------- src/xschem.h | 1 - 10 files changed, 53 insertions(+), 57 deletions(-) diff --git a/src/actions.c b/src/actions.c index c045b270..9a1d5994 100644 --- a/src/actions.c +++ b/src/actions.c @@ -1215,12 +1215,12 @@ const char *get_sym_name(int inst, int ext) sch = get_tok_value(xctx->inst[inst].prop_ptr, "schematic", 0); if(xctx->tok_size) { /* token exists */ if(ext) sym = get_cell_w_ext(add_ext(rel_sym_path(sch), ".sym"), 0); - else sym = skip_dir(add_ext(rel_sym_path(sch), ".sym")); + else sym = get_cell(add_ext(rel_sym_path(sch), ".sym"), 0); } else if(ext) { sym = get_cell_w_ext(tcl_hook2(xctx->inst[inst].name), 0); } else { - sym = skip_dir(tcl_hook2(xctx->inst[inst].name)); + sym = get_cell(tcl_hook2(xctx->inst[inst].name), 0); } dbg(1, "get_sym_name(): inst=%d, ext=%d, returning sym=%s\n", inst, ext, sym); return sym; diff --git a/src/main.c b/src/main.c index 23273183..efb25247 100644 --- a/src/main.c +++ b/src/main.c @@ -38,7 +38,7 @@ static void sig_handler(int s){ if(xctx->undo_type == 0 ) { /* on disk undo */ my_snprintf(emergency_prefix, S(emergency_prefix), "xschem_emergencysave_%s_", - skip_dir(xctx->sch[xctx->currsch])); + get_cell(xctx->sch[xctx->currsch], 0)); if( !(emergency_dir = create_tmpdir(emergency_prefix)) ) { fprintf(errfp, "xinit(): problems creating emergency save dir\n"); tcleval("exit"); @@ -54,7 +54,7 @@ static void sig_handler(int s){ fprintf(errfp, "\nFATAL: signal %d\n", s); - fprintf(errfp, "while editing: %s\n", skip_dir(xctx->sch[xctx->currsch])); + fprintf(errfp, "while editing: %s\n", get_cell(xctx->sch[xctx->currsch], 0)); exit(EXIT_FAILURE); } diff --git a/src/psprint.c b/src/psprint.c index 1607a761..7c44983c 100644 --- a/src/psprint.c +++ b/src/psprint.c @@ -380,7 +380,8 @@ static void set_ps_colors(unsigned int pixel) static void ps_xdrawarc(int layer, int fillarc, double x, double y, double r, double a, double b) { if(xctx->fill_pattern && xctx->fill_type[layer] && fillarc) - fprintf(fd, "%g %g %g %g %g A %g %g LT C F S\n", x, y, r, -a, -a-b, x, y); + fprintf(fd, "%g %g MT %g %g %g %g %g A %g %g LT C F S\n", + x, y, x, y, r, -a, -a-b, x, y); else fprintf(fd, "%g %g %g %g %g A S\n", x, y, r, -a, -a-b); @@ -436,7 +437,7 @@ static void ps_drawpolygon(int c, int what, double *x, double *y, int points, in else fprintf(fd, "%g %g LT\n", xx, yy); } if(xctx->fill_pattern && xctx->fill_type[c] && poly_fill) { - fprintf(fd, "C F S\n"); + fprintf(fd, "GS C F GR S\n"); } else { fprintf(fd, "S\n"); } diff --git a/src/scheduler.c b/src/scheduler.c index dad1db16..4f68bdc1 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -242,7 +242,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg tcleval(f); my_strncpy(f, tclresult(), S(f)); } else { - my_snprintf(f, S(f), "%s/%s.raw", tclgetvar("netlist_dir"), skip_dir(xctx->sch[xctx->currsch])); + my_snprintf(f, S(f), "%s/%s.raw", tclgetvar("netlist_dir"), get_cell(xctx->sch[xctx->currsch], 0)); } tclsetvar("rawfile_loaded", "0"); free_rawfile(1); @@ -906,19 +906,19 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg if(argc > 3 && !strcmp(argv[3], "fallback")) { char f[PATH_MAX]; if(xctx->netlist_type == CAD_SPICE_NETLIST) { - my_snprintf(f, S(f), "%s.spice", skip_dir(xctx->current_name)); + my_snprintf(f, S(f), "%s.spice", get_cell(xctx->current_name, 0)); } else if(xctx->netlist_type == CAD_VHDL_NETLIST) { - my_snprintf(f, S(f), "%s.vhdl", skip_dir(xctx->current_name)); + my_snprintf(f, S(f), "%s.vhdl", get_cell(xctx->current_name, 0)); } else if(xctx->netlist_type == CAD_VERILOG_NETLIST) { - my_snprintf(f, S(f), "%s.v", skip_dir(xctx->current_name)); + my_snprintf(f, S(f), "%s.v", get_cell(xctx->current_name, 0)); } else if(xctx->netlist_type == CAD_TEDAX_NETLIST) { - my_snprintf(f, S(f), "%s.tdx", skip_dir(xctx->current_name)); + my_snprintf(f, S(f), "%s.tdx", get_cell(xctx->current_name, 0)); } else { - my_snprintf(f, S(f), "%s.unknown", skip_dir(xctx->current_name)); + my_snprintf(f, S(f), "%s.unknown", get_cell(xctx->current_name, 0)); } if(xctx->netlist_name[0] == '\0') { Tcl_SetResult(interp, f, TCL_VOLATILE); diff --git a/src/spice_netlist.c b/src/spice_netlist.c index 544964b8..aac26ab0 100644 --- a/src/spice_netlist.c +++ b/src/spice_netlist.c @@ -61,7 +61,7 @@ void hier_psprint(char **res, int what) /* netlister driver */ my_strcat(_ALLOC_ID_, res, xctx->sch[xctx->currsch]); my_strcat(_ALLOC_ID_, res, "}\n"); } - dbg(1,"--> %s\n", skip_dir( xctx->sch[xctx->currsch]) ); + dbg(1,"--> %s\n", get_cell(xctx->sch[xctx->currsch], 0) ); unselect_all(1); remove_symbols(); /* ensure all unused symbols purged before descending hierarchy */ /* reload data without popping undo stack, this populates embedded symbols if any */ @@ -101,7 +101,7 @@ void hier_psprint(char **res, int what) /* netlister driver */ my_strcat(_ALLOC_ID_, res, xctx->sch[xctx->currsch]); my_strcat(_ALLOC_ID_, res, "}\n"); } - dbg(1,"--> %s\n", skip_dir( xctx->sch[xctx->currsch]) ); + dbg(1,"--> %s\n", get_cell(xctx->sch[xctx->currsch], 0) ); } } } @@ -258,7 +258,7 @@ int global_spice_netlist(int global) /* netlister driver */ } xctx->netlist_count=0; my_snprintf(netl_filename, S(netl_filename), "%s/.%s_%d", - tclgetvar("netlist_dir"), skip_dir(xctx->sch[xctx->currsch]), getpid()); + tclgetvar("netlist_dir"), get_cell(xctx->sch[xctx->currsch], 0), getpid()); dbg(1, "global_spice_netlist(): opening %s for writing\n",netl_filename); fd=fopen(netl_filename, "w"); if(fd==NULL) { @@ -270,7 +270,7 @@ int global_spice_netlist(int global) /* netlister driver */ if(xctx->netlist_name[0]) { my_snprintf(cellname, S(cellname), "%s", get_cell_w_ext(xctx->netlist_name, 0)); } else { - my_snprintf(cellname, S(cellname), "%s.spice", skip_dir(xctx->sch[xctx->currsch])); + my_snprintf(cellname, S(cellname), "%s.spice", get_cell(xctx->sch[xctx->currsch], 0)); } first = 0; @@ -305,7 +305,7 @@ int global_spice_netlist(int global) /* netlister driver */ } top_sub = tclgetboolvar("lvs_netlist"); if(!top_sub) fprintf(fd,"**"); - fprintf(fd,".subckt %s", skip_dir( xctx->sch[xctx->currsch]) ); + fprintf(fd,".subckt %s", get_cell(xctx->sch[xctx->currsch], 0)); /* print top subckt ipin/opins */ for(i=0;iinstances; ++i) { @@ -548,10 +548,10 @@ int spice_block_netlist(FILE *fd, int i) dbg(1, "spice_block_netlist(): filename=%s\n", filename); if(split_f) { my_snprintf(netl_filename, S(netl_filename), "%s/.%s_%d", - tclgetvar("netlist_dir"), skip_dir(name), getpid()); + tclgetvar("netlist_dir"), get_cell(name, 0), getpid()); dbg(1, "spice_block_netlist(): split_files: netl_filename=%s\n", netl_filename); fd=fopen(netl_filename, "w"); - my_snprintf(cellname, S(cellname), "%s.spice", skip_dir(name)); + my_snprintf(cellname, S(cellname), "%s.spice", get_cell(name, 0)); } fprintf(fd, "\n* expanding symbol: %s # of pins=%d\n", name,xctx->sym[i].rects[PINLAYER] ); if(xctx->sym[i].base_name) fprintf(fd, "** sym_path: %s\n", abs_sym_path(xctx->sym[i].base_name, "")); @@ -560,7 +560,7 @@ int spice_block_netlist(FILE *fd, int i) if(sym_def[0]) { fprintf(fd, "%s\n", sym_def); } else { - const char *s = sanitize(skip_dir(name)); + const char *s = sanitize(get_cell(name, 0)); fprintf(fd, "** sch_path: %s\n", sanitized_abs_sym_path(filename, "")); fprintf(fd, ".subckt %s ", s); print_spice_subckt_nodes(fd, i); diff --git a/src/tedax_netlist.c b/src/tedax_netlist.c index 760b526b..5b2dee17 100644 --- a/src/tedax_netlist.c +++ b/src/tedax_netlist.c @@ -94,7 +94,7 @@ static int tedax_block_netlist(FILE *fd, int i) else fprintf(fd, "## sym_path: %s\n", sanitized_abs_sym_path(xctx->sym[i].name, "")); fprintf(fd, "## sch_path: %s\n", sanitized_abs_sym_path(filename, "")); - fprintf(fd, "begin netlist v1 %s\n",sanitize(skip_dir(xctx->sym[i].name))); + fprintf(fd, "begin netlist v1 %s\n",sanitize(get_cell(xctx->sym[i].name, 0))); print_tedax_subckt(fd, i); my_strdup(_ALLOC_ID_, &extra, get_tok_value(xctx->sym[i].prop_ptr,"extra",0) ); @@ -147,7 +147,7 @@ int global_tedax_netlist(int global) /* netlister driver */ } xctx->netlist_count=0; my_snprintf(netl_filename, S(netl_filename), "%s/.%s_%d", - tclgetvar("netlist_dir"), skip_dir(xctx->sch[xctx->currsch]), getpid()); + tclgetvar("netlist_dir"), get_cell(xctx->sch[xctx->currsch], 0), getpid()); fd=fopen(netl_filename, "w"); if(fd==NULL){ dbg(0, "global_tedax_netlist(): problems opening netlist file\n"); @@ -158,7 +158,7 @@ int global_tedax_netlist(int global) /* netlister driver */ if(xctx->netlist_name[0]) { my_snprintf(cellname, S(cellname), "%s", get_cell_w_ext(xctx->netlist_name, 0)); } else { - my_snprintf(cellname, S(cellname), "%s.tdx", skip_dir(xctx->sch[xctx->currsch])); + my_snprintf(cellname, S(cellname), "%s.tdx", get_cell(xctx->sch[xctx->currsch], 0)); } /* netlist_options */ @@ -170,7 +170,7 @@ int global_tedax_netlist(int global) /* netlister driver */ } dbg(1, "global_tedax_netlist(): opening %s for writing\n",netl_filename); - fprintf(fd,"tEDAx v1\nbegin netlist v1 %s\n", skip_dir( xctx->sch[xctx->currsch]) ); + fprintf(fd,"tEDAx v1\nbegin netlist v1 %s\n", get_cell( xctx->sch[xctx->currsch], 0) ); tedax_netlist(fd, 0); xctx->netlist_count++; diff --git a/src/token.c b/src/token.c index cc4d7bdb..5e816426 100644 --- a/src/token.c +++ b/src/token.c @@ -1154,18 +1154,13 @@ const char *get_trailing_path(const char *str, int no_of_dir, int skip_ext) return s+(dir_possym[symbol].prop_ptr,"generic_type",0)); dbg(2, "print_generic(): symbol=%d template=%s \n", symbol, template); - fprintf(fd, "%s %s ",ent_or_comp, sanitize(skip_dir(xctx->sym[symbol].name))); + fprintf(fd, "%s %s ",ent_or_comp, sanitize(get_cell(xctx->sym[symbol].name, 0))); if(!strcmp(ent_or_comp,"entity")) fprintf(fd, "is\n"); else @@ -1603,7 +1598,8 @@ void print_spice_subckt_nodes(FILE *fd, int symbol) dbg(1, "print_spice_subckt(): format1=%s\n", format1); /* can not do this, since @symname is used as a token later in format parser */ - /* my_strdup(_ALLOC_ID_, &format1, str_replace(format1, "@symname", skip_dir(xctx->sym[symbol].name), '\\')); */ + /* my_strdup(_ALLOC_ID_, &format1, + * str_replace(format1, "@symname", get_cell(xctx->sym[symbol].name, 0), '\\')); */ if(format1 && strstr(format1, "tcleval(") == format1) { tclres = tcl_hook2(format1); diff --git a/src/verilog_netlist.c b/src/verilog_netlist.c index a62ccd0f..3eddea01 100644 --- a/src/verilog_netlist.c +++ b/src/verilog_netlist.c @@ -103,7 +103,7 @@ int global_verilog_netlist(int global) /* netlister driver */ /* to be printed before any entity declarations */ my_snprintf(netl_filename, S(netl_filename), "%s/.%s_%d", - tclgetvar("netlist_dir"), skip_dir(xctx->sch[xctx->currsch]),getpid()); + tclgetvar("netlist_dir"), get_cell(xctx->sch[xctx->currsch], 0),getpid()); fd=fopen(netl_filename, "w"); if(fd==NULL){ dbg(0, "global_verilog_netlist(): problems opening netlist file\n"); @@ -114,7 +114,7 @@ int global_verilog_netlist(int global) /* netlister driver */ if(xctx->netlist_name[0]) { my_snprintf(cellname, S(cellname), "%s", get_cell_w_ext(xctx->netlist_name, 0)); } else { - my_snprintf(cellname, S(cellname), "%s.v", skip_dir(xctx->sch[xctx->currsch])); + my_snprintf(cellname, S(cellname), "%s.v", get_cell(xctx->sch[xctx->currsch], 0)); } dbg(1, "global_verilog_netlist(): opening %s for writing\n",netl_filename); @@ -145,7 +145,7 @@ int global_verilog_netlist(int global) /* netlister driver */ dbg(1, "global_verilog_netlist(): printing top level entity\n"); - fprintf(fd,"module %s (\n", skip_dir( xctx->sch[xctx->currsch]) ); + fprintf(fd,"module %s (\n", get_cell( xctx->sch[xctx->currsch], 0) ); /* flush data structures (remove unused symbols) */ unselect_all(1); remove_symbols(); /* removed 25122002, readded 04112003 */ @@ -447,10 +447,10 @@ int verilog_block_netlist(FILE *fd, int i) if(split_f) { my_snprintf(netl_filename, S(netl_filename), "%s/.%s_%d", - tclgetvar("netlist_dir"), skip_dir(name), getpid()); + tclgetvar("netlist_dir"), get_cell(name, 0), getpid()); dbg(1, "global_vhdl_netlist(): split_files: netl_filename=%s\n", netl_filename); fd=fopen(netl_filename, "w"); - my_snprintf(cellname, S(cellname), "%s.v", skip_dir(name)); + my_snprintf(cellname, S(cellname), "%s.v", get_cell(name, 0)); } dbg(1, "verilog_block_netlist(): expanding %s\n", name); @@ -492,9 +492,9 @@ int verilog_block_netlist(FILE *fd, int i) get_tok_value(xctx->sym[i].prop_ptr, "verilogprefix", 0)); if(verilogprefix) { my_strdup(_ALLOC_ID_, &symname, verilogprefix); - my_strcat(_ALLOC_ID_, &symname, skip_dir(xctx->sym[i].name)); + my_strcat(_ALLOC_ID_, &symname, get_cell(xctx->sym[i].name, 0)); } else { - my_strdup(_ALLOC_ID_, &symname, skip_dir(xctx->sym[i].name)); + my_strdup(_ALLOC_ID_, &symname, get_cell(xctx->sym[i].name, 0)); } my_free(_ALLOC_ID_, &verilogprefix); @@ -571,7 +571,7 @@ int verilog_block_netlist(FILE *fd, int i) fprintf(fd, " wire %s ;\n", extra_token); } } - dbg(1, "verilog_block_netlist(): netlisting %s\n", skip_dir( xctx->sch[xctx->currsch])); + dbg(1, "verilog_block_netlist(): netlisting %s\n", get_cell( xctx->sch[xctx->currsch], 0)); err |= verilog_netlist(fd, verilog_stop); fprintf(fd,"---- begin user architecture code\n"); for(l=0;linstances; ++l) { diff --git a/src/vhdl_netlist.c b/src/vhdl_netlist.c index 960907b8..046b8865 100644 --- a/src/vhdl_netlist.c +++ b/src/vhdl_netlist.c @@ -143,7 +143,7 @@ int global_vhdl_netlist(int global) /* netlister driver */ xctx->netlist_count=0; str_hash_init(&subckt_table, HASHSIZE); my_snprintf(netl_filename, S(netl_filename), "%s/.%s_%d", - tclgetvar("netlist_dir"), skip_dir(xctx->sch[xctx->currsch]), getpid()); + tclgetvar("netlist_dir"), get_cell(xctx->sch[xctx->currsch], 0), getpid()); fd=fopen(netl_filename, "w"); if(fd==NULL){ @@ -155,7 +155,7 @@ int global_vhdl_netlist(int global) /* netlister driver */ if(xctx->netlist_name[0]) { my_snprintf(cellname, S(cellname), "%s", get_cell_w_ext(xctx->netlist_name, 0)); } else { - my_snprintf(cellname, S(cellname), "%s.vhdl", skip_dir(xctx->sch[xctx->currsch])); + my_snprintf(cellname, S(cellname), "%s.vhdl", get_cell(xctx->sch[xctx->currsch], 0)); } dbg(1, "global_vhdl_netlist(): opening %s for writing\n",netl_filename); @@ -199,7 +199,7 @@ int global_vhdl_netlist(int global) /* netlister driver */ dbg(1, "global_vhdl_netlist(): printing top level entity\n"); /* 20071015 already done in print_generic() */ - /* fprintf(fd," --- entity %s is\n", skip_dir( xctx->sch[xctx->currsch]) ); */ + /* fprintf(fd," --- entity %s is\n", get_cell( xctx->sch[xctx->currsch], 0) ); */ /* 20071015 end */ /* flush data structures (remove unused symbols) */ @@ -216,7 +216,7 @@ int global_vhdl_netlist(int global) /* netlister driver */ print_generic(fd,"entity", xctx->symbols-1); /* added print top level params */ remove_symbol(xctx->symbols - 1); } else { - fprintf(fd,"entity %s is\n", skip_dir( xctx->sch[xctx->currsch]) ); + fprintf(fd,"entity %s is\n", get_cell( xctx->sch[xctx->currsch], 0) ); } /* 20071009 end */ @@ -329,10 +329,10 @@ int global_vhdl_netlist(int global) /* netlister driver */ } } - fprintf(fd,"end %s ;\n\n", skip_dir( xctx->sch[xctx->currsch]) ); + fprintf(fd,"end %s ;\n\n", get_cell( xctx->sch[xctx->currsch], 0) ); fprintf(fd,"architecture arch_%s of %s is\n\n", - sanitize(skip_dir( xctx->sch[xctx->currsch])), - sanitize(skip_dir( xctx->sch[xctx->currsch]))); + sanitize(get_cell( xctx->sch[xctx->currsch], 0)), + sanitize(get_cell( xctx->sch[xctx->currsch], 0))); dbg(1, "global_vhdl_netlist(): printing top level used components\n"); /* print all components */ @@ -413,7 +413,7 @@ int global_vhdl_netlist(int global) /* netlister driver */ if(xctx->schvhdlprop && xctx->schvhdlprop[0]) { fprintf(fd, "%s\n", xctx->schvhdlprop); } - fprintf(fd, "end arch_%s ;\n\n", skip_dir( xctx->sch[xctx->currsch]) ); + fprintf(fd, "end arch_%s ;\n\n", get_cell( xctx->sch[xctx->currsch], 0) ); if(split_f) { int save; @@ -542,10 +542,10 @@ int vhdl_block_netlist(FILE *fd, int i) if(split_f) { my_snprintf(netl_filename, S(netl_filename), "%s/.%s_%d", - tclgetvar("netlist_dir"), skip_dir(xctx->sym[i].name), getpid()); + tclgetvar("netlist_dir"), get_cell(xctx->sym[i].name, 0), getpid()); dbg(1, "vhdl_block_netlist(): split_files: netl_filename=%s\n", netl_filename); fd=fopen(netl_filename, "w"); - my_snprintf(cellname, S(cellname), "%s.vhdl", skip_dir(xctx->sym[i].name) ); + my_snprintf(cellname, S(cellname), "%s.vhdl", get_cell(xctx->sym[i].name, 0) ); } dbg(1, "vhdl_block_netlist(): expanding %s\n", xctx->sym[i].name); @@ -633,13 +633,13 @@ int vhdl_block_netlist(FILE *fd, int i) if(xctx->inst[l].prop_ptr) fprintf(fd, "%s\n", xctx->inst[l].prop_ptr); } } - fprintf(fd,"end %s ;\n\n", sanitize(skip_dir(xctx->sym[i].name)) ); + fprintf(fd,"end %s ;\n\n", sanitize(get_cell(xctx->sym[i].name, 0)) ); dbg(1, "vhdl_block_netlist(): architecture\n"); fprintf(fd,"architecture arch_%s of %s is\n\n", - sanitize(skip_dir(xctx->sym[i].name)), - sanitize(skip_dir(xctx->sym[i].name)) ); - /* skip_dir( xctx->sch[xctx->currsch]), skip_dir( xctx->sch[xctx->currsch])); */ + sanitize(get_cell(xctx->sym[i].name, 0)), + sanitize(get_cell(xctx->sym[i].name, 0)) ); + /* get_cell( xctx->sch[xctx->currsch], 0), get_cell( xctx->sch[xctx->currsch], 0)); */ /* load current schematic to print used components */ dbg(1, "vhdl_block_netlist(): used components\n"); @@ -706,7 +706,7 @@ int vhdl_block_netlist(FILE *fd, int i) get_additional_symbols(0); } /* if(!vhdl_stop) */ my_free(_ALLOC_ID_, &abs_path); - dbg(1, "vhdl_block_netlist(): netlisting %s\n", skip_dir( xctx->sch[xctx->currsch])); + dbg(1, "vhdl_block_netlist(): netlisting %s\n", get_cell( xctx->sch[xctx->currsch], 0)); err |= vhdl_netlist(fd, vhdl_stop); fprintf(fd,"//// begin user architecture code\n"); @@ -726,7 +726,7 @@ int vhdl_block_netlist(FILE *fd, int i) } if(xctx->schvhdlprop && xctx->schvhdlprop[0]) fprintf(fd, "%s\n", xctx->schvhdlprop); - fprintf(fd, "end arch_%s ;\n\n", sanitize(skip_dir(xctx->sym[i].name)) ); + fprintf(fd, "end arch_%s ;\n\n", sanitize(get_cell(xctx->sym[i].name, 0)) ); my_free(_ALLOC_ID_, &sig_type); my_free(_ALLOC_ID_, &port_value); my_free(_ALLOC_ID_, &type); diff --git a/src/xschem.h b/src/xschem.h index e68af98d..ef99f8b6 100644 --- a/src/xschem.h +++ b/src/xschem.h @@ -1152,7 +1152,6 @@ extern void svg_embedded_graph(FILE *fd, xRect *r, double rx1, double ry1, doubl extern void set_viewport_size(int w, int h, double lw); extern void print_image(); extern const char *get_trailing_path(const char *str, int no_of_dir, int skip_ext); -extern const char *skip_dir(const char *str); extern const char *get_cell(const char *str, int no_of_dir); extern const char *get_cell_w_ext(const char *str, int no_of_dir); extern const char *rel_sym_path(const char *s);