How about using this alternative form: if((b != nil) &&(b->qid.type==a->qid.type) &&(b->qid.path==a->qid.path) &&(b->qid.vers==a->qid.vers) &&(b->dev==a->dev) &&(b->type==a->type)){ fprint(2, "cp: %s and %s are the same file\n", an, bn); ret = 1; } It keeps almost the same visual look and it uses the common convetion, except for the && at the beginning of each line.
Using ifs is definitely more readable than &&, words always win. However carefully alignment of && and ( can make things better. Note that the comment after "if" is necessary to keep the shape balanced. if( /* b is same as a */ (b != nil) && (b->qid.type == a->qid.type) && (b->qid.path == a->qid.path) && (b->qid.vers == a->qid.vers) && (b->dev == a->dev) && (b->type == a->type) ){ fprint(2, "cp: %s and %s are the sam…
Add seven to three then multiply the whole thing by twelve.
(7 + 3) * 12