Implemented option -alter_date, corrected write problem with mode and ownership

This commit is contained in:
2007-11-08 14:43:53 +00:00
parent 8d480b1b91
commit 2ac12ad0e9
5 changed files with 587 additions and 29 deletions

View File

@ -314,11 +314,11 @@ int Xorriso_write_growing(struct XorrisO *xorriso, int flag)
sopts.copy_eltorito= 1;
sopts.no_cache_inodes= 0;
sopts.sort_files= 1;
sopts.default_mode= 0;
sopts.replace_dir_mode= 0;
sopts.dir_mode= 0555;
sopts.replace_file_mode= 0;
sopts.file_mode= 0444;
sopts.default_mode= 1;
sopts.replace_dir_mode= xorriso->do_global_mode;
sopts.dir_mode= xorriso->global_dir_mode;
sopts.replace_file_mode= xorriso->do_global_mode;
sopts.file_mode= xorriso->global_file_mode;
sopts.replace_uid= (xorriso->do_global_uid);
sopts.uid= xorriso->global_uid;
sopts.replace_gid= (xorriso->do_global_gid);
@ -879,6 +879,7 @@ handle_path_node:;
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0);
}
iso_tree_node_set_ctime((struct iso_tree_node *) dir, time(NULL));
/* >>> copy properties from correspondent directory in disk_path
if there is any */;
@ -1902,7 +1903,7 @@ much_too_long:;
tmpt= localtime_r(&mtime, &tms);
if(tmpt==0)
sprintf(rpt+strlen(rpt), "%12.f ",(double) mtime);
else if(time(0)-mtime < 180*86400)
else if(time(NULL)-mtime < 180*86400 && time(NULL)-mtime >= 0)
sprintf(rpt+strlen(rpt), "%3s %2d %2.2d:%2.2d ",
months[tms.tm_mon], tms.tm_mday, tms.tm_hour, tms.tm_min);
else
@ -2045,7 +2046,7 @@ wdi_is_not_a_dir:;
tmpt= localtime_r(&mtime, &tms);
if(tmpt==0)
sprintf(rpt+strlen(rpt), "%12.f ",(double) mtime);
else if(time(0)-mtime < 180*86400)
else if(time(NULL)-mtime < 180*86400 && time(NULL)-mtime >= 0)
sprintf(rpt+strlen(rpt), "%3s %2d %2.2d:%2.2d ",
months[tms.tm_mon], tms.tm_mday, tms.tm_hour, tms.tm_min);
else
@ -2479,6 +2480,7 @@ int Xorriso_set_st_mode(struct XorrisO *xorriso, char *in_path,
mode= iso_tree_node_get_permissions(node);
mode= (mode & mode_and) | mode_or;
iso_tree_node_set_permissions(node, mode);
iso_tree_node_set_ctime(node, time(NULL));
sprintf(xorriso->info_text,"Permissions now: %-5.5o %s",
mode, Text_shellsafe(path, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
@ -2497,6 +2499,7 @@ int Xorriso_set_uid(struct XorrisO *xorriso, char *in_path, uid_t uid,
if(ret<=0)
return(ret);
iso_tree_node_set_uid(node, uid);
iso_tree_node_set_ctime(node, time(NULL));
xorriso->volset_change_pending= 1;
return(1);
}
@ -2512,6 +2515,30 @@ int Xorriso_set_gid(struct XorrisO *xorriso, char *in_path, gid_t gid,
if(ret<=0)
return(ret);
iso_tree_node_set_gid(node, gid);
iso_tree_node_set_ctime(node, time(NULL));
xorriso->volset_change_pending= 1;
return(1);
}
/* @parm flag bit0= atime, bit1= ctime, bit2= mtime, bit8=no auto ctime */
int Xorriso_set_time(struct XorrisO *xorriso, char *in_path, time_t t,
int flag)
{
int ret;
struct iso_tree_node *node;
ret= Xorriso_get_node_by_path(xorriso, in_path, NULL, &node, 0);
if(ret<=0)
return(ret);
if(flag&1)
iso_tree_node_set_atime(node, t);
if(flag&2)
iso_tree_node_set_ctime(node, t);
if(flag&4)
iso_tree_node_set_mtime(node, t);
if(!(flag&(2|256)))
iso_tree_node_set_ctime(node, time(NULL));
xorriso->volset_change_pending= 1;
return(1);
}