diff --git a/src/actions.c b/src/actions.c index dadc86bc..9750b79c 100644 --- a/src/actions.c +++ b/src/actions.c @@ -1182,15 +1182,23 @@ void get_sch_from_sym(char *filename, xSymbol *sym) char *sch = NULL; const char *str_tmp; + int web_url = 0; + if( strstr(xctx->current_dirname, "http://") == xctx->current_dirname || + strstr(xctx->current_dirname, "https://") == xctx->current_dirname) { + web_url = 1; + } if((str_tmp = get_tok_value(sym->prop_ptr, "schematic",0 ))[0]) { my_strdup2(1252, &sch, str_tmp); - my_strncpy(filename, abs_sym_path(sch, ""), PATH_MAX); + if(web_url) my_strncpy(filename, sch, PATH_MAX); + else my_strncpy(filename, abs_sym_path(sch, ""), PATH_MAX); my_free(1253, &sch); } else { if(tclgetboolvar("search_schematic")) { - my_strncpy(filename, abs_sym_path(sym->name, ".sch"), PATH_MAX); + if(web_url) my_strncpy(filename, add_ext(sym->name, ".sch"), PATH_MAX); + else my_strncpy(filename, abs_sym_path(sym->name, ".sch"), PATH_MAX); } else { - my_strncpy(filename, add_ext(abs_sym_path(sym->name, ""), ".sch"), PATH_MAX); + if(web_url) my_strncpy(filename, add_ext(sym->name, ".sch"), PATH_MAX); + else my_strncpy(filename, add_ext(abs_sym_path(sym->name, ""), ".sch"), PATH_MAX); } } dbg(1, "get_sch_from_sym(): sym->name=%s, filename=%s\n", sym->name, filename); @@ -1311,10 +1319,18 @@ int descend_schematic(int instnumber) hilight_child_pins(); get_sch_from_sym(filename, xctx->inst[n].ptr+ xctx->sym); + dbg(1, "descend_schematic(): filename=%s\n", filename); unselect_all(1); remove_symbols(); - load_schematic(1,filename, 1); - + if( strstr(xctx->current_dirname, "http://") == xctx->current_dirname || + strstr(xctx->current_dirname, "https://") == xctx->current_dirname) { + char sympath[PATH_MAX]; + tclvareval("try_download_url {", xctx->current_dirname, "} {", filename, "}", NULL); + my_snprintf(sympath, S(sympath), "%s/%s", tclgetvar("XSCHEM_TMP_DIR"), get_cell_w_ext(filename, 0)); + load_schematic(1, sympath, 1); + } else { + load_schematic(1, filename, 1); + } if(xctx->hilight_nets) { prepare_netlist_structs(0); diff --git a/src/editprop.c b/src/editprop.c index 9a86ab14..ff1f4d23 100644 --- a/src/editprop.c +++ b/src/editprop.c @@ -451,10 +451,10 @@ size_t my_strcat(int id, char **str, const char *append_str) memcpy(*str + s, append_str, a); dbg(3,"my_strcat(%d,): reallocated string %s\n", id, *str); return s + a - 1; - } else { + } else { /* str = NULL */ if(append_str == NULL || append_str[0] == '\0') return 0; a = strlen(append_str) + 1; - *str = my_malloc(id, a); + *str = my_malloc(id, a ); memcpy(*str, append_str, a); dbg(3,"my_strcat(%d,): allocated string %s\n", id, *str); return a - 1; diff --git a/src/save.c b/src/save.c index aedf173d..5761e947 100644 --- a/src/save.c +++ b/src/save.c @@ -2142,13 +2142,15 @@ void link_symbols_to_instances(int from) /* from >= 0 : linking symbols from pas } /* ALWAYS use absolute pathname for filename!!! */ -void load_schematic(int load_symbols, const char *filename, int reset_undo) /* 20150327 added reset_undo */ +void load_schematic(int load_symbols, const char *fname, int reset_undo) /* 20150327 added reset_undo */ { FILE *fd; char name[PATH_MAX]; + char filename[PATH_MAX]; char msg[PATH_MAX+100]; struct stat buf; int i; + xctx->prep_hi_structs=0; xctx->prep_net_structs=0; xctx->prep_hash_inst=0; @@ -2156,17 +2158,28 @@ void load_schematic(int load_symbols, const char *filename, int reset_undo) /* 2 if(reset_undo) xctx->clear_undo(); if(reset_undo) xctx->prev_set_modify = -1; /* will force set_modify(0) to set window title */ else xctx->prev_set_modify = 0; /* will prevent set_modify(0) from setting window title */ - if(filename && filename[0]) { + if(fname && fname[0]) { + my_strncpy(filename, fname, S(filename)); my_strncpy(name, filename, S(name)); - my_strncpy(xctx->sch[xctx->currsch], name, S(xctx->sch[xctx->currsch])); + if(strstr(filename , "http://") == filename || + strstr(filename , "https://") == filename) { + tclvareval("download_url {", filename, "}", NULL); + my_snprintf(name, S(name), "%s/%s", tclgetvar("XSCHEM_TMP_DIR"), get_cell_w_ext(filename, 0)); + my_snprintf(msg, S(msg), "regsub {/\\.$} [get_directory {%s}] {}", filename); + my_strncpy(xctx->current_dirname, tcleval(msg), S(xctx->current_dirname)); + dbg(1, "load_schematic(): filename=%s\n", filename); + } else if((strstr(xctx->current_dirname, "http://") == xctx->current_dirname || + strstr(xctx->current_dirname, "https://") == xctx->current_dirname)) { + } else { + my_snprintf(msg, S(msg), "regsub {/\\.$} [get_directory {%s}] {}", filename); + my_strncpy(xctx->current_dirname, tcleval(msg), S(xctx->current_dirname)); + } /* if name is /some/path/. remove /. at end */ - my_snprintf(msg, S(msg), "regsub {/\\.$} [file dirname {%s}] {}", name); - my_strncpy(xctx->current_dirname, tcleval(msg), S(xctx->current_dirname)); - my_strncpy(xctx->current_name, rel_sym_path(name), S(xctx->current_name)); + my_strncpy(xctx->sch[xctx->currsch], filename, S(xctx->sch[xctx->currsch])); + my_strncpy(xctx->current_name, rel_sym_path(filename), S(xctx->current_name)); dbg(1, "load_schematic(): opening file for loading:%s, filename=%s\n", name, filename); dbg(1, "load_schematic(): sch[currsch]=%s\n", xctx->sch[xctx->currsch]); if(!name[0]) return; - if(reset_undo) { if(!stat(name, &buf)) { /* file exists */ xctx->time_last_modify = buf.st_mtime; @@ -2176,9 +2189,8 @@ void load_schematic(int load_symbols, const char *filename, int reset_undo) /* 2 } } if( (fd=fopen(name,fopen_read_mode))== NULL) { - fprintf(errfp, "load_schematic(): unable to open file: %s, filename=%s\n", - name, filename ? filename : ""); - my_snprintf(msg, S(msg), "update; alert_ {Unable to open file: %s}", filename ? filename: "(null)"); + fprintf(errfp, "load_schematic(): unable to open file: %s, filename=%s\n", name, filename ); + my_snprintf(msg, S(msg), "update; alert_ {Unable to open file: %s}", filename); tcleval(msg); clear_drawing(); if(reset_undo) set_modify(0); @@ -2842,8 +2854,16 @@ int load_sym_def(const char *name, FILE *embed_fd) my_strncpy(sympath, abs_sym_path(name, ""), S(sympath)); } if(!embed_fd) { /* regular symbol: open file */ - if((lcc[level].fd=fopen(sympath,fopen_read_mode))==NULL) - { + if((lcc[level].fd=fopen(sympath,fopen_read_mode))==NULL) { + /* not found: try web URL */ + if( strstr(xctx->current_dirname, "http://") == xctx->current_dirname || + strstr(xctx->current_dirname, "https://") == xctx->current_dirname) { + tclvareval("try_download_url {", xctx->current_dirname, "} {", name, "}", NULL); + my_snprintf(sympath, S(sympath), "%s/%s", tclgetvar("XSCHEM_TMP_DIR"), get_cell_w_ext(name, 0)); + lcc[level].fd=fopen(sympath,fopen_read_mode); + } + } + if(lcc[level].fd==NULL) { /* issue warning only on top level symbol loading */ if(recursion_counter == 1) dbg(0, "l_s_d(): Symbol not found: %s\n",sympath); my_snprintf(sympath, S(sympath), "%s/%s", tclgetvar("XSCHEM_SHAREDIR"), "systemlib/missing.sym"); @@ -3587,6 +3607,7 @@ void descend_symbol(void) char name[PATH_MAX]; char name_embedded[PATH_MAX]; int n = 0; + struct stat buf; rebuild_selected_array(); if(xctx->lastsel > 1) return; if(xctx->lastsel==1 && xctx->sel_array[0].type==ELEMENT) { @@ -3643,10 +3664,20 @@ void descend_symbol(void) /* load_symbol(name_embedded); */ load_schematic(1, name_embedded, 1); } else { - /* load_symbol(abs_sym_path(name, "")); */ + char sympath[PATH_MAX]; + my_strncpy(sympath, abs_sym_path(name, ""), S(sympath)); unselect_all(1); remove_symbols(); /* must follow save (if) embedded */ - load_schematic(1, abs_sym_path(name, ""), 1); + dbg(1, "name=%s, sympath=%s\n", name, sympath); + + if( stat(sympath, &buf) && /* file does not exists */ + (strstr(xctx->current_dirname, "http://") == xctx->current_dirname || + strstr(xctx->current_dirname, "https://") == xctx->current_dirname)) { + my_snprintf(sympath, S(sympath), "%s/%s", tclgetvar("XSCHEM_TMP_DIR"), get_cell_w_ext(name, 0)); + load_schematic(1, sympath, 1); + } else { + load_schematic(1, sympath, 1); + } } zoom_full(1, 0, 1, 0.97); } diff --git a/src/scheduler.c b/src/scheduler.c index 99672479..dad3fc66 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -3109,8 +3109,10 @@ int tclvareval(const char *script, ...) va_start(args, script); size = my_strcat(1379, &str, script); + dbg(1, "tclvareval(): script=%s, str=%s, size=%d\n", script, str, size); while( (p = va_arg(args, const char *)) ) { size = my_strcat(1380, &str, p); + dbg(1, "tclvareval(): p=%s, str=%s, size=%d\n", p, str, size); } return_code = Tcl_EvalEx(interp, str, (int)size, TCL_EVAL_GLOBAL); va_end(args); diff --git a/src/xschem.h b/src/xschem.h index 388eb4fd..65af1e2b 100644 --- a/src/xschem.h +++ b/src/xschem.h @@ -1254,7 +1254,7 @@ extern void mem_push_undo(void); extern void mem_pop_undo(int redo, int set_modify_status); extern void mem_delete_undo(void); extern void mem_clear_undo(void); -extern void load_schematic(int load_symbol, const char *abs_name, int reset_undo); +extern void load_schematic(int load_symbol, const char *fname, int reset_undo); /* check if filename already in an open window/tab */ extern int check_loaded(const char *f, char *win_path); extern void link_symbols_to_instances(int from); diff --git a/src/xschem.tcl b/src/xschem.tcl index 87cb3617..36ada25f 100644 --- a/src/xschem.tcl +++ b/src/xschem.tcl @@ -2320,7 +2320,7 @@ namespace eval c_toolbar { set c_t($i,file) {} } - proc cleanup {} { +proc cleanup {} { variable c_t if {![info exists c_t(n)]} return set j 0 @@ -2349,9 +2349,9 @@ namespace eval c_toolbar { set i [expr {($i + 1) % $n} ] if {$i == $top} break } - } +} - proc display {} { +proc display {} { variable c_t if { [winfo exists $c_t(w)]} { set w $c_t(w) @@ -2372,9 +2372,9 @@ namespace eval c_toolbar { if { $i == $c_t(top) } break } } - } +} - proc add {f} { +proc add {f} { variable c_t for {set i 0} {$i < $c_t(n)} {incr i} { if { $c_t($i,file) eq $f } { return 0} @@ -3805,7 +3805,7 @@ proc edit_prop {txtlabel} { } wm geometry .dialog "${edit_prop_size}+$X+$Y" set prev_symbol $symbol - set editprop_sympath [file dirname [abs_sym_path $symbol]] + set editprop_sympath [get_directory [abs_sym_path $symbol]] frame .dialog.f4 label .dialog.f4.l1 -text $txtlabel label .dialog.f4.path -text "Path:" @@ -4422,6 +4422,39 @@ proc find_file { f {paths {}} } { return $res } +# alternative implementation of "file dirname ... " +# that does not mess with http:// (file dirname removes double slashes) +proc get_directory {f} { + if {![regexp {/} $f]} { + set r . + } else { + set r [regsub {/[^/]*$} $f {}] + } + return $r +} + +proc download_url {url} { + global XSCHEM_TMP_DIR download_url_helper + set r [catch {exec sh -c "cd $XSCHEM_TMP_DIR; $download_url_helper $url"} res] + puts "download_url: url=$url, exit code=$r, res=$res" + return $r +} + +proc try_download_url {dirname sch_or_sym} { + set url $dirname/$sch_or_sym + puts "try_download_url: dirname=$dirname, sch_or_sym=$sch_or_sym" + set r [download_url $url] + if { $r!=0} { + set nitems [regexp -all {/+} $sch_or_sym] + puts "try_download_url: dirname=$dirname, sch_or_sym=$sch_or_sym, nitems=$nitems" + while { $nitems > 0} { + set dirname [get_directory $dirname] + incr nitems -1 + } + set url $dirname/$sch_or_sym + set r [download_url $url] + } +} # given an absolute path of a symbol/schematic remove the path prefix # if file is in a library directory (a $pathlist dir) @@ -6198,6 +6231,7 @@ set_ne myload_globfilter {*} set_ne component_browser_on_top 1 ## list of tcl procedures to load at end of xschem.tcl set_ne tcl_files {} +set_ne download_url_helper {curl -f -s -O} set_ne netlist_dir "$USER_CONF_DIR/simulations" # this global exists only for netlist_type radiobuttons, don't use, use [xschem] subcommand to get/set values # it is also used in xschemrc to set initial netlist type. diff --git a/src/xschemrc b/src/xschemrc index 15cdb60f..b5dfd806 100644 --- a/src/xschemrc +++ b/src/xschemrc @@ -336,6 +336,13 @@ # lappend tcl_files ${XSCHEM_SHAREDIR}/change_index.tcl # lappend tcl_files ${XSCHEM_SHAREDIR}/ngspice_backannotate.tcl +########################################################################### +#### WEB URL DOWNLOAD HELPER APPLICATION +########################################################################### +#### used to download files from web: default: {curl -f -s -O} +# set download_url_helper {curl -f -s -O} +# set download_url_helper {wget --quiet} + ########################################################################### #### XSCHEM TOOLBAR ########################################################################### diff --git a/xschem_library/ngspice/pv_ngspice.sch b/xschem_library/ngspice/pv_ngspice.sch index a8f6af21..8cb0f5cb 100644 --- a/xschem_library/ngspice/pv_ngspice.sch +++ b/xschem_library/ngspice/pv_ngspice.sch @@ -7,11 +7,11 @@ S {} E {} B 2 860 -550 1360 -160 {flags=graph y1 = 0 -y2 = 7.29638 +y2 = 6.6 divy = 4 subdivy=1 x1=0 -x2=22 +x2=24 divx=8 unitx=1 color=15 @@ -19,11 +19,11 @@ node=i(vload) dataset=-1} B 2 860 -790 1360 -550 {flags=graph y1 = 0 -y2 = 120 +y2 = 112 divy = 4 subdivy=1 x1=0 -x2=22 +x2=24 divx=8 unitx=1 color=8 @@ -56,9 +56,9 @@ C {ammeter.sym} 230 -470 2 1 {name=Vm} C {lab_pin.sym} 230 -610 2 0 {name=l2 sig_type=std_logic lab=pn} C {lab_pin.sym} 230 -510 2 0 {name=l3 sig_type=std_logic lab=mn} C {isource_arith.sym} 230 -560 2 0 {name=G1 -CUR="v(f) * 6 * (1 - exp( (v(pn,mn) -+ -18.5 - v(f)*3 ) * 0.7) - -+ 0.005 * (v(pn,mn) - 18.5 - v(f)*3))" +CUR="v(f) * 5.5 * (1 - exp( (v(pn,mn) ++ -21 - v(f)*2.5 ) * 0.6) - ++ 0.002 * (v(pn,mn) - 21 - v(f)*2.5))" } C {ipin.sym} 90 -420 2 1 {name=p2 lab=fade} C {ammeter.sym} 140 -420 3 0 {name=Vf} @@ -72,7 +72,7 @@ vsun fade 0 0 vref minus 0 0 .control save plus i(vload) i(vm) n(pn) v(mn) -dc vload 0 22 0.5 vsun 0.2 1.0 0.2 +dc vload 0 24 0.5 vsun 0.2 1.0 0.2 write pv_ngspice.raw quit .endc @@ -95,65 +95,173 @@ descr="Load embedded waves" tclcommand="xschem raw_read_from_attr" spice_data=" VGl0bGU6ICoqIHNjaF9wYXRoOiAvaG9tZS9zY2hpcHBlcy94c2NoZW0tcmVwby90cnVuay94c2NoZW1fbGlicmFyeS9uZ3NwaWNlL3B2X25nc3BpY2Uuc2NoCkRhdGU6 -IFR1ZSBTZXAgMjcgMTc6MDQ6MjEgIDIwMjIKUGxvdG5hbWU6IERDIHRyYW5zZmVyIGNoYXJhY3RlcmlzdGljCkZsYWdzOiByZWFsCk5vLiBWYXJpYWJsZXM6IDMKTm8u -IFBvaW50czogMjI1ClZhcmlhYmxlczoKCTAJdih2LXN3ZWVwKQl2b2x0YWdlCgkxCXYocGx1cykJdm9sdGFnZQoJMglpKHZsb2FkKQljdXJyZW50CkJpbmFyeToKAAAA -AAAAAAAAAAAAAAAAABkliAuYCPU/AAAAAAAA4D8AAAAAAADgP2PJI6FN/PQ/AAAAAAAA8D8AAAAAAADwPzn3PsoC8PQ/AAAAAAAA+D8AAAAAAAD4P4fYHXy34/Q/AAAA -AAAAAEAAAAAAAAAAQA2vyIRr1/Q/AAAAAAAABEAAAAAAAAAEQM4hV50ey/Q/AAAAAAAACEAAAAAAAAAIQITIKWHQvvQ/AAAAAAAADEAAAAAAAAAMQFxMdkGAsvQ/AAAA -AAAAEEAAAAAAAAAQQMyZm3MtpvQ/AAAAAAAAEkAAAAAAAAASQJpKDtjWmfQ/AAAAAAAAFEAAAAAAAAAUQH7SwtZ6jfQ/AAAAAAAAFkAAAAAAAAAWQN8JriwXgfQ/AAAA -AAAAGEAAAAAAAAAYQCs+HKSodPQ/AAAAAAAAGkAAAAAAAAAaQLF9AK8qaPQ/AAAAAAAAHEAAAAAAAAAcQHRtptaWW/Q/AAAAAAAAHkAAAAAAAAAeQLLb6u7jTvQ/AAAA -AAAAIEAAAAAAAAAgQH5do/MEQvQ/AAAAAAAAIUAAAAAAAAAhQA99PmznNPQ/AAAAAAAAIkAAAAAAAAAiQBvckyJxJ/Q/AAAAAAAAI0AAAAAAAAAjQK+4eOR8GfQ/AAAA -AAAAJEAAAAAAAAAkQEruU+nVCvQ/AAAAAAAAJUAAAAAAAAAlQEtY20kx+/M/AAAAAAAAJkAAAAAAAAAmQJH3Brsk6vM/AAAAAAAAJ0AAAAAAAAAnQHMzjGYZ1/M/AAAA -AAAAKEAAAAAAAAAoQPlcIUA5wfM/AAAAAAAAKUAAAAAAAAApQPgwJIhUp/M/AAAAAAAAKkAAAAAAAAAqQMFnaDS8h/M/AAAAAAAAK0AAAAAAAAArQFOsQZgMYPM/AAAA -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 -AAAANkAAAAAAAAA2QACfbNc4PATA"} +IE1vbiBOb3YgMTQgMTQ6MTk6NDggIDIwMjIKUGxvdG5hbWU6IERDIHRyYW5zZmVyIGNoYXJhY3RlcmlzdGljCkZsYWdzOiByZWFsCk5vLiBWYXJpYWJsZXM6IDgKTm8u +IFBvaW50czogMjQ1ClZhcmlhYmxlczoKCTAJdih2LXN3ZWVwKQl2b2x0YWdlCgkxCXYobW4pCXZvbHRhZ2UKCTIJdihwbHVzKQl2b2x0YWdlCgkzCXYocG4pCXZvbHRh +Z2UKCTQJaSh2ZikJY3VycmVudAoJNQlpKHZsb2FkKQljdXJyZW50Cgk2CWkodm0pCWN1cnJlbnQKCTcJaSh2cCkJY3VycmVudApCaW5hcnk6CgAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLBwxdVFvyP8sHDF1UW/I/ywcMXVRb8j8AAAAAAADgPwAAAAAAAAAAAAAAAAAA4D8AAAAAAADgPwAAAAAAAAAAIUTCENJW +8j8hRMIQ0lbyPyFEwhDSVvI/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAABtURlJPUvI/G1RGUk9S8j8bVEZST1LyPwAAAAAAAPg/AAAAAAAA +AAAAAAAAAAD4PwAAAAAAAPg/AAAAAAAAAABASGsezE3yP0BIax7MTfI/QEhrHsxN8j8AAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAtOEgTEhJ +8j+04SBMSEnyP7ThIExISfI/AAAAAAAABEAAAAAAAAAAAAAAAAAAAARAAAAAAAAABEAAAAAAAAAAAFMU+aPDRPI/UxT5o8NE8j9TFPmjw0TyPwAAAAAAAAhAAAAAAAAA +AAAAAAAAAAAIQAAAAAAAAAhAAAAAAAAAAACsUCHbPUDyP6xQIds9QPI/rFAh2z1A8j8AAAAAAAAMQAAAAAAAAAAAAAAAAAAADEAAAAAAAAAMQAAAAAAAAAAABaOZjLY7 +8j8Fo5mMtjvyPwWjmYy2O/I/AAAAAAAAEEAAAAAAAAAAAAAAAAAAABBAAAAAAAAAEEAAAAAAAAAAAO4oDDAtN/I/7igMMC038j/uKAwwLTfyPwAAAAAAABJAAAAAAAAA +AAAAAAAAAAASQAAAAAAAABJAAAAAAAAAAACdRHANoTLyP51EcA2hMvI/nURwDaEy8j8AAAAAAAAUQAAAAAAAAAAAAAAAAAAAFEAAAAAAAAAUQAAAAAAAAAAAyZRaLBEu +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 +/r+AngSwJeD+v4CeBLAl4P6/"} C {ngspice_get_expr.sym} 280 -560 0 0 {name=r24 node="[format %.4g [expr ([ngspice::get_voltage pn] - [ngspice::get_voltage mn]) * [ngspice::get_current Vm]]] W" descr = power