From: Emiel van de Laar Date: 2004-06-29T03:51:20+09:00 Subject: (forw) [emiel@il.fontys.nl: ruby-quota resurrection?] --jI8keyz6grp/JLjh Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable This mail was intended for the original author of ruby-quota; Takaaki Tateishi . However my mail bounced at this address and so I'll try ruby-talk. ----- Forwarded message from Emiel van de Laar ----- Date: Mon, 28 Jun 2004 20:42:46 +0200 From: Emiel van de Laar To: ttate@jaist.ac.jp User-Agent: Mutt/1.3.28i Subject: ruby-quota resurrection? Hi, I've been writing scripts to manage our quotas on Linux. Instead of parsing 'repquota' I went looking for something beter. ruby-quota! Yeah! However it appears to not have been update in a while. I can't even get it compiled on my Linux 2.4 or 2.6 systems w/ Ruby 1.8. I've never written a Ruby extension, but have done some investigation. It appears that quota.h isn't being included on either 2.4 or 2.6 such that "struct dqblk" is undefined. linux/quota.h appears to have changed a lot. Could you maybe look into this and get ruby-quota running again with ruby 1.8.x? If you don't have the time right now, perhaps a couple of hints. :) BTW: The version number in quota.c doesn't match the packaged version number. My setup. Debian(unstable) / Linux 2.6.7 Ruby ruby 1.8.2 (2004-06-19) [i386-linux] Thanks in advance. Cheers, Emiel --=20 Emiel van de Laar PGP pubkey: %finger emiel@il.fontys.nl ----- End forwarded message ----- --=20 Emiel van de Laar PGP pubkey: %finger emiel@il.fontys.nl --jI8keyz6grp/JLjh Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="make.out" gcc -fPIC -Wall -g -O2 -fPIC -I. -I/usr/lib/ruby/1.8/i386-linux -I/usr/lib/ruby/1.8/i386-linux -I. -DHAVE_LINUX_QUOTA_H -DHAVE_LINUX_TYPES_H -DHAVE_SYS_QUOTA_H -DHAVE_SYS_TYPES_H -c quota.c quota.c:62: parse error before "qid_t" quota.c:62: warning: no semicolon at end of struct or union quota.c:63: warning: type defaults to `int' in declaration of `q_uid_data' quota.c:63: warning: data definition has no type or storage class quota.c:66: parse error before "rb_quota_uid" quota.c:67: warning: return type defaults to `int' quota.c: In function `rb_quota_uid': quota.c:68: parse error before ')' token quota.c:69: warning: control reaches end of non-void function quota.c: At top level: quota.c:72: parse error before '*' token quota.c: In function `rb_quota_uid_free': quota.c:74: `data' undeclared (first use in this function) quota.c:74: (Each undeclared identifier is reported only once quota.c:74: for each function it appears in.) quota.c: At top level: quota.c:78: parse error before "qid_t" quota.c: In function `rb_quota_uid_new': quota.c:80: `data' undeclared (first use in this function) quota.c:83: parse error before ')' token quota.c:83: `__s' undeclared (first use in this function) quota.c:80: warning: statement with no effect quota.c:83: warning: control reaches end of non-void function quota.c: At top level: quota.c:83: parse error before ')' token quota.c:83: `__s' undeclared here (not in a function) quota.c:83: parse error before "switch" quota.c:83: warning: type defaults to `int' in declaration of `__u' quota.c:83: conflicting types for `__u' quota.c:83: previous declaration of `__u' quota.c:83: warning: initialization makes integer from pointer without a cast quota.c:83: initializer element is not constant quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before "case" quota.c:83: warning: type defaults to `int' in declaration of `__u' quota.c:83: redefinition of `__u' quota.c:83: `__u' previously defined here quota.c:83: warning: initialization makes integer from pointer without a cast quota.c:83: initializer element is not constant quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before "case" quota.c:83: warning: type defaults to `int' in declaration of `__u' quota.c:83: redefinition of `__u' quota.c:83: `__u' previously defined here quota.c:83: warning: initialization makes integer from pointer without a cast quota.c:83: initializer element is not constant quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before "case" quota.c:83: warning: type defaults to `int' in declaration of `__u' quota.c:83: redefinition of `__u' quota.c:83: `__u' previously defined here quota.c:83: warning: initialization makes integer from pointer without a cast quota.c:83: initializer element is not constant quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before '->' token quota.c:83: warning: type defaults to `int' in declaration of `__u' quota.c:83: redefinition of `__u' quota.c:83: `__u' previously defined here quota.c:83: warning: initialization makes integer from pointer without a cast quota.c:83: initializer element is not constant quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before "case" quota.c:83: warning: type defaults to `int' in declaration of `__u' quota.c:83: redefinition of `__u' quota.c:83: `__u' previously defined here quota.c:83: warning: initialization makes integer from pointer without a cast quota.c:83: initializer element is not constant quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before "case" quota.c:83: warning: type defaults to `int' in declaration of `__u' quota.c:83: redefinition of `__u' quota.c:83: `__u' previously defined here quota.c:83: warning: initialization makes integer from pointer without a cast quota.c:83: initializer element is not constant quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before "case" quota.c:83: warning: type defaults to `int' in declaration of `__u' quota.c:83: redefinition of `__u' quota.c:83: `__u' previously defined here quota.c:83: warning: initialization makes integer from pointer without a cast quota.c:83: initializer element is not constant quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before "case" quota.c:83: warning: type defaults to `int' in declaration of `__u' quota.c:83: redefinition of `__u' quota.c:83: `__u' previously defined here quota.c:83: warning: initialization makes integer from pointer without a cast quota.c:83: initializer element is not constant quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before "case" quota.c:83: warning: type defaults to `int' in declaration of `__u' quota.c:83: redefinition of `__u' quota.c:83: `__u' previously defined here quota.c:83: warning: initialization makes integer from pointer without a cast quota.c:83: initializer element is not constant quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before "case" quota.c:83: warning: type defaults to `int' in declaration of `__u' quota.c:83: redefinition of `__u' quota.c:83: `__u' previously defined here quota.c:83: warning: initialization makes integer from pointer without a cast quota.c:83: initializer element is not constant quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before "case" quota.c:83: warning: type defaults to `int' in declaration of `__u' quota.c:83: redefinition of `__u' quota.c:83: `__u' previously defined here quota.c:83: warning: initialization makes integer from pointer without a cast quota.c:83: initializer element is not constant quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before "case" quota.c:83: warning: type defaults to `int' in declaration of `__u' quota.c:83: redefinition of `__u' quota.c:83: `__u' previously defined here quota.c:83: warning: initialization makes integer from pointer without a cast quota.c:83: initializer element is not constant quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before "case" quota.c:83: warning: type defaults to `int' in declaration of `__s' quota.c:83: `__s' used prior to declaration quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before '}' token quota.c:83: parse error before '\x0' quota.c:83: warning: type defaults to `int' in declaration of `__s' quota.c:83: warning: data definition has no type or storage class quota.c:83: parse error before '}' token quota.c: In function `rb_quota_uid_to_i': quota.c:111: parse error before ')' token quota.c: At top level: quota.c:115: parse error before "qid_t" quota.c: In function `get_uid': quota.c:117: `vuid' undeclared (first use in this function) quota.c:118: `uid' undeclared (first use in this function) quota.c:119: `is_gid' undeclared (first use in this function) quota.c: In function `rb_quotactl': quota.c:144: `qid_t' undeclared (first use in this function) quota.c:144: parse error before "uid" quota.c:146: `uid' undeclared (first use in this function) quota.c:149: parse error before "uid" quota.c:152: parse error before "uid" quota.c:154: warning: control reaches end of non-void function quota.c: At top level: quota.c:229: warning: `struct disk_dqblk' declared inside parameter list quota.c:229: warning: its scope is only this definition or declaration, which is probably not what you want. quota.c: In function `rb_diskquota_get': quota.c:236: dereferencing pointer to incomplete type quota.c:237: dereferencing pointer to incomplete type quota.c:241: dereferencing pointer to incomplete type quota.c:242: dereferencing pointer to incomplete type quota.c:243: dereferencing pointer to incomplete type quota.c:244: dereferencing pointer to incomplete type quota.c:245: dereferencing pointer to incomplete type quota.c: At top level: quota.c:269: warning: `struct disk_dqblk' declared inside parameter list quota.c: In function `rb_diskquota_new': quota.c:275: dereferencing pointer to incomplete type quota.c:276: dereferencing pointer to incomplete type quota.c:278: dereferencing pointer to incomplete type quota.c:282: dereferencing pointer to incomplete type quota.c:283: dereferencing pointer to incomplete type quota.c:284: dereferencing pointer to incomplete type quota.c:285: dereferencing pointer to incomplete type quota.c:286: dereferencing pointer to incomplete type quota.c: In function `rb_quota_getquota': quota.c:318: storage size of `c_dqb' isn't known quota.c:318: warning: unused variable `c_dqb' quota.c: In function `rb_quota_setquota': quota.c:359: storage size of `c_dqb' isn't known quota.c:359: warning: unused variable `c_dqb' quota.c: In function `rb_quota_setqlim': quota.c:375: storage size of `c_dqb' isn't known quota.c:375: warning: unused variable `c_dqb' quota.c: At top level: quota.c:73: warning: `rb_quota_uid_free' defined but not used make: *** [quota.o] Error 1 --jI8keyz6grp/JLjh--