g_printf(_("No index records for cwd on new date\n"));
g_printf(_("Setting cwd to mount point\n"));
disk_path = newstralloc(disk_path, "/"); /* fake it */
+ disk_tpath = newstralloc(disk_tpath, "/"); /* fake it */
clear_dir_list();
}
}
amfree(disk_name);
amfree(mount_point);
amfree(disk_path);
+ amfree(disk_tpath);
clear_dir_list();
}
amfree(cmd);
if (server_happy())
{
disk_path = newstralloc(disk_path, "/");
+ disk_tpath = newstralloc(disk_tpath, "/");
suck_dir_list_from_server(); /* get list of directory contents */
}
else
g_printf(_("No index records for disk for specified date\n"));
g_printf(_("If date correct, notify system administrator\n"));
disk_path = newstralloc(disk_path, "/"); /* fake it */
+ disk_tpath = newstralloc(disk_tpath, "/"); /* fake it */
clear_dir_list();
}
amfree(uqmtpt);
char *uqglob;
int result;
- char *path_on_disk = NULL;
+ char *tpath_on_disk = NULL;
if (disk_name == NULL) {
g_printf(_("Must select disk before changing directory\n"));
/* convert path (assumed in cwd) to one on disk */
if (strcmp(disk_path, "/") == 0)
- path_on_disk = stralloc2("/", regex_path);
+ tpath_on_disk = stralloc2("/", regex_path);
else {
- char *clean_disk_path = clean_regex(disk_path, 0);
- path_on_disk = vstralloc(clean_disk_path, "/", regex_path, NULL);
- amfree(clean_disk_path);
+ char *clean_disk_tpath = clean_regex(disk_tpath, 0);
+ tpath_on_disk = vstralloc(clean_disk_tpath, "/", regex_path, NULL);
+ amfree(clean_disk_tpath);
}
- result = cd_dir(path_on_disk, uqglob, verbose);
+ result = cd_dir(tpath_on_disk, uqglob, verbose);
amfree(regex_path);
- amfree(path_on_disk);
+ amfree(tpath_on_disk);
amfree(uqglob);
return result;
int len_uqregex;
int result;
- char *path_on_disk = NULL;
+ char *tpath_on_disk = NULL;
if (disk_name == NULL) {
g_printf(_("Must select disk before changing directory\n"));
/* convert path (assumed in cwd) to one on disk */
if (strcmp(disk_path, "/") == 0)
- path_on_disk = stralloc2("/", uqregex);
+ tpath_on_disk = stralloc2("/", uqregex);
else {
- char *clean_disk_path = clean_regex(disk_path, 0);
- path_on_disk = vstralloc(clean_disk_path, "/", regex, NULL);
- amfree(clean_disk_path);
+ char *clean_disk_tpath = clean_regex(disk_tpath, 0);
+ tpath_on_disk = vstralloc(clean_disk_tpath, "/", regex, NULL);
+ amfree(clean_disk_tpath);
}
- result = cd_dir(path_on_disk, uq_orig_regex, verbose);
+ result = cd_dir(tpath_on_disk, uq_orig_regex, verbose);
- amfree(path_on_disk);
+ amfree(tpath_on_disk);
amfree(uqregex);
amfree(uq_orig_regex);
int
cd_dir(
- char * path_on_disk,
- char * default_dir,
- int verbose)
+ char *tpath_on_disk,
+ char *default_dir,
+ int verbose)
{
char *dir = NULL;
char *s;
DIR_ITEM *ditem;
- if ((s = validate_regexp(path_on_disk)) != NULL) {
+ if ((s = validate_regexp(tpath_on_disk)) != NULL) {
result = set_directory(default_dir, verbose);
return result;
}
for (ditem=get_dir_list(); ditem!=NULL && nb_found <= 1;
ditem=get_next_dir_item(ditem))
{
- if (match(path_on_disk, ditem->path))
+ if (match(tpath_on_disk, ditem->tpath))
{
- i = strlen(ditem->path);
- if((i > 0 && ditem->path[i-1] == '/')
- || (i > 1 && ditem->path[i-2] == '/' && ditem->path[i-1] == '.'))
+ i = strlen(ditem->tpath);
+ if((i > 0 && ditem->tpath[i-1] == '/')
+ || (i > 1 && ditem->tpath[i-2] == '/' && ditem->tpath[i-1] == '.'))
{ /* It is a directory */
char *dir1, *dir2;
nb_found++;
return result;
}
+/* dir is relative to dir_path or absolute with mount_point */
int
set_directory(
char * dir,
if (server_happy())
{
disk_path = newstralloc(disk_path, new_dir);
+ g_free(disk_tpath);
+ disk_tpath = translate_octal(g_strdup(disk_path));
suck_dir_list_from_server(); /* get list of directory contents */
if (verbose)
show_directory(); /* say where we moved to */
if (mount_point == NULL || disk_path == NULL)
g_printf(_("Must select disk first\n"));
else if (strcmp(mount_point, "/") == 0)
- g_printf("%s\n", disk_path);
+ g_printf("%s\n", disk_tpath);
else if (strcmp(disk_path, "/") == 0)
g_printf("%s\n", mount_point);
else
- g_printf("%s%s\n", mount_point, disk_path);
+ g_printf("%s%s\n", mount_point, disk_tpath);
}
server_name);
}
+void
+set_translate(
+ char *translate)
+{
+
+ if (translate == NULL) {
+ translate_mode = TRUE;
+ } else if (strcasecmp(translate, "yes") == 0 ||
+ strcasecmp(translate, "true") == 0 ||
+ strcasecmp(translate, "on") == 0) {
+ translate_mode = TRUE;
+ } else {
+ translate_mode = FALSE;
+ }
+ suck_dir_list_from_server(); /* get list of directory contents */
+}
+
void
set_mode(
int mode)