char *_GIO_decomposeURL(const unichar_t *uri) { unichar_t *pt; // file:///path/to.something, or /path/to/something pt = uc_strstr(uri, "://"); if (pt == NULL) { return cu_copy(uri); } pt += 3; return cu_copy(pt); }
char *_GIO_decomposeURL(const unichar_t *url,char **host, int *port, char **username, char **password) { unichar_t *pt, *pt2, *upt, *ppt; char *path; char proto[40]; /* ftp://[user[:password]@]ftpserver[:port]/url-path */ *username = NULL; *password = NULL; *port = -1; pt = uc_strstr(url,"://"); if ( pt==NULL ) { *host = NULL; return( cu_copy(url)); } cu_strncpy(proto,url,(size_t)(pt-url)<sizeof(proto)?(size_t)(pt-url):sizeof(proto)); pt += 3; pt2 = u_strchr(pt,'/'); if ( pt2==NULL ) { pt2 = pt+u_strlen(pt); path = copy("/"); } else { path = cu_copy(pt2); } upt = u_strchr(pt,'@'); if ( upt!=NULL && upt<pt2 ) { ppt = u_strchr(pt,':'); if ( ppt==NULL ) *username = cu_copyn(pt,upt-pt); else { *username = cu_copyn(pt,ppt-pt); *password = cu_copyn(ppt+1,upt-ppt-1); } pt = upt+1; } ppt = u_strchr(pt,':'); if ( ppt!=NULL && ppt<pt2 ) { char *temp = cu_copyn(ppt+1,pt2-ppt-1), *end; *port = strtol(temp,&end,10); if ( *end!='\0' ) *port = -2; free(temp); pt2 = ppt; } *host = cu_copyn(pt,pt2-pt); if ( *username ) *password = GIO_PasswordCache(proto,*host,*username,*password); return( path ); }
void _GIO_localDispatch(GIOControl *gc) { char *path = u2def_copy(gc->path); char *topath; switch ( gc->gf ) { case gf_dir: _gio_file_dir(gc,path); break; case gf_statfile: _gio_file_statfile(gc,path); break; case gf_mkdir: _gio_file_mkdir(gc,path); break; case gf_delfile: _gio_file_delfile(gc,path); break; case gf_deldir: _gio_file_deldir(gc,path); break; case gf_renamefile: topath = cu_copy(gc->topath); _gio_file_renamefile(gc,path,topath); free(topath); break; default: break; } free(path); }
void mbDoGetText(GMenuItem *mb) { /* perform gettext substitutions on this menu and all sub menus */ int i; if ( mb==NULL ) return; for ( i=0; mb[i].ti.text!=NULL || mb[i].ti.line || mb[i].ti.image!=NULL; ++i ) { if( mb[i].shortcut ) { unichar_t tmp[2]; tmp[0] = mb[i].shortcut; tmp[1] = (unichar_t)(0); mb[i].ti.text_untranslated = cu_copy(tmp); } else mb[i].ti.text_untranslated = cu_copy(mb[i].ti.text); if ( mb[i].ti.text!=NULL ) { mb[i].ti.text = (unichar_t *) S_((char *) mb[i].ti.text); if ( mb[i].sub!=NULL ) mbDoGetText(mb[i].sub); } } }
static void BdfP_Invoked(GWindow v, GMenuItem *mi, GEvent *e) { struct bdf_dlg *bd = (struct bdf_dlg *) GDrawGetUserData(v); BDFFont *bdf = bd->cur->bdf; char *prop_name = cu_copy(mi->ti.text); int sel = bd->cur->sel_prop; int i; if ( sel>=bdf->prop_cnt ) { /* Create a new one */ if ( bdf->prop_cnt>=bdf->prop_max ) bdf->props = grealloc(bdf->props,(bdf->prop_max+=10)*sizeof(BDFProperties)); sel = bd->cur->sel_prop = bdf->prop_cnt++; bdf->props[sel].name = prop_name; for ( i=0; StandardProps[i].name!=NULL; ++i ) if ( strcmp(prop_name,StandardProps[i].name)==0 ) break; if ( StandardProps[i].name!=NULL ) { bdf->props[sel].type = StandardProps[i].type; if ( (bdf->props[sel].type&~prt_property)==prt_string || (bdf->props[sel].type&~prt_property)==prt_atom) bdf->props[sel].u.str = NULL; else bdf->props[sel].u.val = 0; if ( StandardProps[i].defaultable ) _BdfP_DefaultCurrent(bd); else if ( (bdf->props[sel].type&~prt_property)==prt_string || (bdf->props[sel].type&~prt_property)==prt_atom) bdf->props[sel].u.str = copy(""); } else { bdf->props[sel].type = prt_property|prt_string; bdf->props[sel].u.str = copy(""); } } else { free(bdf->props[sel].name); bdf->props[sel].name = prop_name; } GDrawRequestExpose(bd->v,NULL,false); }
void NonLinearDlg(FontView *fv,CharView *cv) { static unichar_t *lastx, *lasty; struct nldlg d; GRect pos; GWindowAttrs wattrs; GGadgetCreateData gcd[8], boxes[4], *hvarray[3][3], *barray[9], *varray[3][2]; GTextInfo label[8]; struct context c; char *expstr; memset(&d,'\0',sizeof(d)); memset(&c,'\0',sizeof(c)); memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_utf8_wtitle|wam_undercursor|wam_restrict|wam_isdlg; wattrs.event_masks = ~(1<<et_charup); wattrs.restrict_input_to_me = 1; wattrs.is_dlg = 1; wattrs.undercursor = 1; wattrs.cursor = ct_pointer; wattrs.utf8_window_title = _("Non Linear Transform"); pos.x = pos.y = 0; pos.width = GGadgetScale(GDrawPointsToPixels(NULL,200)); pos.height = GDrawPointsToPixels(NULL,97); d.gw = GDrawCreateTopWindow(NULL,&pos,nld_e_h,&d,&wattrs); memset(gcd,0,sizeof(gcd)); memset(boxes,0,sizeof(boxes)); memset(label,0,sizeof(label)); /* GT: an expression describing the transformation applied to the X coordinate */ label[0].text = (unichar_t *) _("X Expr:"); label[0].text_is_1byte = true; gcd[0].gd.label = &label[0]; gcd[0].gd.pos.x = 10; gcd[0].gd.pos.y = 8; gcd[0].gd.flags = gg_visible | gg_enabled | gg_utf8_popup; gcd[0].gd.popup_msg = (unichar_t *) _("These expressions may contain the operators +,-,*,/,%,^ (which means raise to the power of here), and ?: It may also contain a few standard functions. Basic terms are real numbers, x and y.\nExamples:\n x^3+2.5*x^2+5\n (x-300)*(y-200)/100\n y+sin(100*x)"); gcd[0].creator = GLabelCreate; hvarray[0][0] = &gcd[0]; if ( lastx!=NULL ) label[1].text = lastx; else { label[1].text = (unichar_t *) "x"; label[1].text_is_1byte = true; } gcd[1].gd.label = &label[1]; gcd[1].gd.pos.x = 55; gcd[1].gd.pos.y = 5; gcd[1].gd.pos.width = 135; gcd[1].gd.flags = gg_visible | gg_enabled | gg_utf8_popup; gcd[1].gd.popup_msg = (unichar_t *) _("These expressions may contain the operators +,-,*,/,%,^ (which means raise to the power of here), and ?: It may also contain a few standard functions. Basic terms are real numbers, x and y.\nExamples:\n x^3+2.5*x^2+5\n (x-300)*(y-200)/100\n y+sin(100*x)"); gcd[1].creator = GTextFieldCreate; hvarray[0][1] = &gcd[1]; hvarray[0][2] = NULL; /* GT: an expression describing the transformation applied to the Y coordinate */ label[2].text = (unichar_t *) _("Y Expr:"); label[2].text_is_1byte = true; gcd[2].gd.label = &label[2]; gcd[2].gd.pos.x = 10; gcd[2].gd.pos.y = gcd[0].gd.pos.y+26; gcd[2].gd.flags = gg_visible | gg_enabled | gg_utf8_popup; gcd[2].gd.popup_msg = (unichar_t *) _("These expressions may contain the operators +,-,*,/,%,^ (which means raise to the power of here), and ?: It may also contain a few standard functions. Basic terms are real numbers, x and y.\nExamples:\n x^3+2.5*x^2+5\n (x-300)*(y-200)/100\n y+sin(100*x)"); gcd[2].creator = GLabelCreate; hvarray[1][0] = &gcd[2]; if ( lasty!=NULL ) label[3].text = lasty; else { label[3].text = (unichar_t *) "y"; label[3].text_is_1byte = true; } gcd[3].gd.label = &label[3]; gcd[3].gd.pos.x = gcd[1].gd.pos.x; gcd[3].gd.pos.y = gcd[1].gd.pos.y+26; gcd[3].gd.pos.width = gcd[1].gd.pos.width; gcd[3].gd.flags = gg_visible | gg_enabled | gg_utf8_popup; gcd[3].gd.popup_msg = (unichar_t *) _("These expressions may contain the operators +,-,*,/,%,^ (which means raise to the power of here), and ?: It may also contain a few standard functions. Basic terms are real numbers, x and y.\nExamples:\n x^3+2.5*x^2+5\n (x-300)*(y-200)/100\n y+sin(100*x)"); gcd[3].creator = GTextFieldCreate; hvarray[1][1] = &gcd[3]; hvarray[1][2] = NULL; hvarray[2][0] = NULL; boxes[2].gd.flags = gg_enabled|gg_visible; boxes[2].gd.u.boxelements = hvarray[0]; boxes[2].creator = GHVBoxCreate; varray[0][0] = &boxes[2]; varray[0][1] = NULL; gcd[4].gd.pos.x = 30-3; gcd[4].gd.pos.y = gcd[3].gd.pos.y+30; gcd[4].gd.pos.width = -1; gcd[4].gd.pos.height = 0; gcd[4].gd.flags = gg_visible | gg_enabled | gg_but_default; label[4].text = (unichar_t *) _("_OK"); label[4].text_is_1byte = true; label[4].text_in_resource = true; gcd[4].gd.label = &label[4]; gcd[4].gd.cid = true; gcd[4].creator = GButtonCreate; barray[0] = GCD_Glue; barray[1] = &gcd[4]; barray[2] = GCD_Glue; gcd[5].gd.pos.x = -30; gcd[5].gd.pos.y = gcd[4].gd.pos.y+3; gcd[5].gd.pos.width = -1; gcd[5].gd.pos.height = 0; gcd[5].gd.flags = gg_visible | gg_enabled | gg_but_cancel; label[5].text = (unichar_t *) _("_Cancel"); label[5].text_is_1byte = true; label[5].text_in_resource = true; gcd[5].gd.label = &label[5]; gcd[5].gd.cid = false; gcd[5].creator = GButtonCreate; barray[3] = GCD_Glue; barray[4] = &gcd[5]; barray[5] = GCD_Glue; barray[6] = NULL; boxes[3].gd.flags = gg_enabled|gg_visible; boxes[3].gd.u.boxelements = barray; boxes[3].creator = GHBoxCreate; varray[1][0] = &boxes[3]; varray[1][1] = NULL; varray[2][0] = NULL; boxes[0].gd.pos.x = boxes[0].gd.pos.y = 2; boxes[0].gd.flags = gg_enabled|gg_visible; boxes[0].gd.u.boxelements = varray[0]; boxes[0].creator = GHVGroupCreate; GGadgetsCreate(d.gw,boxes); GHVBoxSetExpandableCol(boxes[2].ret,1); GHVBoxSetExpandableCol(boxes[3].ret,gb_expandgluesame); GHVBoxFitWindow(boxes[0].ret); GDrawSetVisible(d.gw,true); while ( !d.done ) { GDrawProcessOneEvent(NULL); if ( d.done && d.ok ) { expstr = cu_copy(_GGadgetGetTitle(gcd[1].ret)); c.had_error = false; if ( (c.x_expr = nlt_parseexpr(&c,expstr))==NULL ) d.done = d.ok = false; else { free(expstr); c.had_error = false; expstr = cu_copy(_GGadgetGetTitle(gcd[3].ret)); if ( (c.y_expr = nlt_parseexpr(&c,expstr))==NULL ) { d.done = d.ok = false; nlt_exprfree(c.x_expr); } else { free(expstr); free(lasty); free(lastx); lastx = GGadgetGetTitle(gcd[1].ret); lasty = GGadgetGetTitle(gcd[3].ret); } } } } if ( d.ok ) { if ( fv!=NULL ) _SFNLTrans((FontViewBase *) fv,&c); else CVNLTrans((CharViewBase *) cv,&c); nlt_exprfree(c.x_expr); nlt_exprfree(c.y_expr); } GDrawDestroyWindow(d.gw); }
void GIOSetUserAgent(unichar_t *agent) { free( _GIO_stdfuncs.useragent ); _GIO_stdfuncs.useragent = cu_copy(agent); }