diff --git a/src/pacman/util.c b/src/pacman/util.c
index d773bc1..a59fc48 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -79,16 +79,14 @@ int trans_release(void)
 
 int needs_root(void)
 {
-	if(config->op_s_print) {
-		return(0);
-	}
-	if(config->op == PM_OP_UPGRADE || config->op == PM_OP_REMOVE || /* -U, -R */
-	   (config->op == PM_OP_SYNC && (config->op_s_clean || config->op_s_sync || /* -Sc, -Sy */
-	      (!config->group && !config->op_s_info && !config->op_q_list /* all other -S combinations, where */
-	        && !config->op_s_search)))) {  /* -g, -i, -l, -s is not set */
-		return(1);
-	} else {
-		return(0);
+	switch(config->op) {
+		case PM_OP_UPGRADE:
+		case PM_OP_REMOVE:
+			return(!config->op_s_print);
+		case PM_OP_SYNC:
+			return(config->op_s_clean || config->op_s_sync ||
+					(!config->group && !config->op_s_info && !config->op_q_list &&
+					 !config->op_s_search && !config->op_s_print));
 	}
 }
 
