New find action -hide, new find test -hidden

This commit is contained in:
2010-06-20 07:22:24 +00:00
parent eb5639b017
commit ec1cb90cba
11 changed files with 177 additions and 53 deletions

View File

@ -1743,7 +1743,7 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
char *abs_path, char *show_path,
IsoNode *node, int depth, int flag)
{
int ret= 0, type, action= 0, hflag, deleted= 0, no_dive= 0;
int ret= 0, type, action= 0, hflag, deleted= 0, no_dive= 0, hide_attrs;
uid_t user= 0;
gid_t group= 0;
time_t date= 0;
@ -1860,10 +1860,16 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
ret= Xorriso_mkisofs_lower_r(xorriso, node, 0);
} else if(action == 38) { /* sort_weight */
iso_node_set_sort_weight(node, type);
} else if(action == 38) { /* hide */
/* >>> iso_node_set_hidden */;
} else if(action == 39) { /* hide */
hide_attrs= 0;
if(type) {
hide_attrs|= LIBISO_HIDE_BUT_WRITE;
if(type & 1)
hide_attrs|= LIBISO_HIDE_ON_RR;
if(type & 2)
hide_attrs|= LIBISO_HIDE_ON_JOLIET;
}
iso_node_set_hidden(node, hide_attrs);
} else { /* includes : 15 in_iso */
sprintf(xorriso->result_line, "%s\n", Text_shellsafe(show_path, sfe, 0));
Xorriso_result(xorriso, 0);
@ -1915,7 +1921,7 @@ return:
*/
{
int value=0, ret, start_lba, end_lba;
int lba_count, *file_end_lbas= NULL, *file_start_lbas= NULL, i;
int lba_count, *file_end_lbas= NULL, *file_start_lbas= NULL, i, mask;
void *arg1, *arg2;
char ft, *decision, md5[16];
regmatch_t name_match;
@ -2091,6 +2097,20 @@ return:
break; case 16: /* -disk_name *arg1 (regex in *arg2) */
value= !! Exprtest_match_disk_name(xorriso, ftest, node, 0);
break; case 17: /* -hidden int *arg1 */
value= 0;
ret= iso_node_get_hidden(node);
mask= *((int *) arg1) & 3;
if(mask == 0 && !(ret & (LIBISO_HIDE_ON_RR | LIBISO_HIDE_ON_JOLIET)))
value= 1;
else if(mask == 1 && (ret & LIBISO_HIDE_ON_RR))
value= 1;
else if(mask == 2 && (ret & LIBISO_HIDE_ON_JOLIET))
value= 1;
else if(mask == 3 && (ret & LIBISO_HIDE_ON_RR) &&
(ret & LIBISO_HIDE_ON_JOLIET))
value= 1;
break; default:
/* >>> complain about unknown test type */;