dll/shell32/shlfileop.c cleanup questions

Joris Huizer jorishuizer at planet.nl
Fri Feb 18 07:14:21 CST 2005


Hello,

I'm looking at the dll/shell32/shlfileop.c file; the function 
SHFileOperationW is still huge but in order to split off sections (some 
are clear to see but difficult to seperate from the rest)
I'd either have to use huge parameter lists, or put parts together in 
structs (some vars are used everywhere in combination) What is your 
opinion about this?

Also, I found something weird, the line at the top of the while loop:
   nFileOp.wFunc =  ((level + 1) << 4) + FuncSwitch;
seems to be equivalent to
   nFileOp.wFunc = (((lpFileOp->wFunc >> 4) + 1) << 4) + 
(lpFileOp->wFunc & FO_MASK);
and
   nFileOp.wFunc = (((lpFileOp->wFunc >> 4) + 1) << 4) + 
(lpFileOp->wFunc & 0xF);
and
   nFileOp.wFunc = (lpFileOp->wFunc & (~(0xF))) + (1 << 4) + 
(lpFileOp->wFunc & 0xF);
and
   nFileOp.wFunc = (lpFileOp->wFunc & (~(0xF))) + (0x10) + 
(lpFileOp->wFunc & 0xF);
and
   nFileOp.wFunc = lpFileOp->wFunc + 0x10; /* what's this 0x10? */

and in turn, no tests go off when changing that to:
   nFileOp.wFunc = lpFileOp->wFunc;

Am I missing something here?

regards,

Joris



More information about the wine-devel mailing list