2003-01-14  Roland McGrath  <roland@redhat.com>

	* resource.c [LINUX] (quotacmds): Grok new command encodings.
	From Nathan Scott <nathans@debian.org>.
diff --git a/resource.c b/resource.c
index 3de9fba..8e64660 100644
--- a/resource.c
+++ b/resource.c
@@ -455,6 +455,12 @@
 
 #ifdef LINUX
 
+#define NEW_CMD(c)      ((0x80<<16)+(c))
+#define XQM_CMD(c)      (('X'<<8)+(c))
+#define NEW_COMMAND(c) (( ((c) >> SUBCMDSHIFT) & (0x80 << 16)))
+#define XQM_COMMAND(c) (( ((c) >> SUBCMDSHIFT) & ('X' << 8)) == ('X' << 8))
+#define OLD_COMMAND(c) (!NEW_COMMAND(c) && !XQM_COMMAND(c))
+
 static struct xlat quotacmds[] = {
 	{ Q_QUOTAON,	"Q_QUOTAON"	},
 	{ Q_QUOTAOFF,	"Q_QUOTAOFF"	},
@@ -465,6 +471,20 @@
 	{ Q_SETQLIM,	"Q_SETQLIM"	},
 	{ Q_GETSTATS,	"Q_GETSTATS"	},
 	{ Q_RSQUASH,	"Q_RSQUASH"	},
+	{ NEW_CMD(0x1), "Q_SYNC"        },
+	{ NEW_CMD(0x2), "Q_QUOTAON"     },
+	{ NEW_CMD(0x3), "Q_QUOTAOFF"    },
+	{ NEW_CMD(0x4), "Q_GETFMT"      },
+	{ NEW_CMD(0x5), "Q_GETINFO"     },
+	{ NEW_CMD(0x6), "Q_SETINFO"     },
+	{ NEW_CMD(0x7), "Q_GETQUOTA"    },
+	{ NEW_CMD(0x8), "Q_SETQUOTA"    },
+	{ XQM_CMD(0x1), "Q_XQUOTAON"    },
+	{ XQM_CMD(0x2), "Q_XQUOTAOFF"   },
+	{ XQM_CMD(0x3), "Q_XGETQUOTA"   },
+	{ XQM_CMD(0x4), "Q_XSETQLIM"    },
+	{ XQM_CMD(0x5), "Q_XGETQSTAT"   },
+	{ XQM_CMD(0x6), "Q_XQUOTARM"    },
 	{ 0,		NULL		},
 };
 
@@ -491,9 +511,9 @@
 
 		if (!tcp->u_arg[3])
 			tprintf("NULL");
-		else if (!verbose(tcp))
+               else if (!verbose(tcp) || !OLD_COMMAND(tcp->u_arg[0]))
 			tprintf("%#lx", tcp->u_arg[3]);
-                else if (umoven(tcp, tcp->u_arg[3], sizeof(struct dqblk),   
+                else if (umoven(tcp, tcp->u_arg[3], sizeof(struct dqblk),
                     (char *) &dq) < 0)
                         tprintf("???");
 		else {
@@ -551,7 +571,7 @@
 		printpath(tcp, tcp->u_arg[0]);
 		tprintf(", ");
 		printxval(quotacmds, tcp->u_arg[1], "Q_???");
-#endif		
+#endif
 		tprintf(", %lu, %#lx", tcp->u_arg[2], tcp->u_arg[3]);
 	}
 	return 0;