| 192 } |
192 } |
| 193 |
193 |
| 194 return url; |
194 return url; |
| 195 } |
195 } |
| 196 |
196 |
| 197 static char* ConcatPath(const char *path1, const char *path2) { |
197 char* pathbar_concat_path(const char *path1, const char *path2) { |
| 198 return concat_path_s(cx_str(path1), cx_str(path2)).ptr; |
198 return concat_path_s(cx_str(path1), cx_str(path2)).ptr; |
| 199 } |
199 } |
| 200 |
200 |
| 201 void pathbar_pathinput(Widget w, PathBar *p, XtPointer d) |
201 void pathbar_pathinput(Widget w, PathBar *p, XtPointer d) |
| 202 { |
202 { |
| 203 char *newpath = XNETextGetString(p->textfield); |
203 char *newpath = XNETextGetString(p->textfield); |
| 204 if(newpath) { |
204 if(newpath) { |
| 205 if(newpath[0] == '~') { |
205 if(newpath[0] == '~') { |
| 206 char *p = newpath+1; |
206 char *p = newpath+1; |
| 207 char *home = getenv("HOME"); |
207 char *home = getenv("HOME"); |
| 208 char *cp = ConcatPath(home, p); |
208 char *cp = pathbar_concat_path(home, p); |
| 209 XtFree(newpath); |
209 XtFree(newpath); |
| 210 newpath = cp; |
210 newpath = cp; |
| 211 } else if(newpath[0] != '/') { |
211 } else if(newpath[0] != '/') { |
| 212 char curdir[2048]; |
212 char curdir[2048]; |
| 213 curdir[0] = 0; |
213 curdir[0] = 0; |
| 214 getcwd(curdir, 2048); |
214 getcwd(curdir, 2048); |
| 215 char *cp = ConcatPath(curdir, newpath); |
215 char *cp = pathbar_concat_path(curdir, newpath); |
| 216 XtFree(newpath); |
216 XtFree(newpath); |
| 217 newpath = cp; |
217 newpath = cp; |
| 218 } |
218 } |
| 219 |
219 |
| 220 /* update path */ |
220 /* update path */ |