xfs_quota: support relative path as `path' arguments
RFC PATCH 1/1 xfs_quota: support relative path as `path' arguments
From: Satoru Takeuchi <[email protected]>
Current xfs_quota only accepts absolute path as its `path' arguments. This patch adds the support of relative path for user's convenience.
--- libxcmd/paths.c | 42 +++++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-)
libxcmd/paths.c +29 -13
@@ -27,6 +27,7 @@#include <xfs/path.h> #include <xfs/input.h> #include <xfs/project.h> +#include <limits.h> extern char *progname;
@@ -273,6 +274,7 @@ fs_table_initialise_mounts(FILE *mtp;char *fslog, *fsrt;int error, found; +char *rpath =NULL ; error = found =0 ; fslog = fsrt =NULL ;
@@ -286,26 +288,32 @@ fs_table_initialise_mounts(if ((mtp =setmntent (mtab_file,"r" )) ==NULL )return ENOENT ; +if (path) +if ((rpath =realpath (path,NULL )) ==NULL ) +return ENOENT ; +while ((mnt =getmntent (mtp)) !=NULL ) {if (strcmp (mnt->mnt_type,"xfs" ) !=0 )continue ; -if (path && - ((strcmp (path, mnt->mnt_dir) !=0 ) && - (strcmp (path, mnt->mnt_fsname) !=0 ))) +if (rpath && + ((strcmp (rpath, mnt->mnt_dir) !=0 ) && + (strcmp (rpath, mnt->mnt_fsname) !=0 )))continue ;if (fs_extract_mount_options (mnt, &fslog, &fsrt))continue ; (void )fs_table_insert (mnt->mnt_dir,0 ,FS_MOUNT_POINT , mnt->mnt_fsname, fslog, fsrt); -if (path) { +if (rpath) { found =1 ;break ; } }endmntent (mtp); -if (path && !found) - error =ENXIO ; - +if (rpath) { +free (rpath); +if (!found) + error =ENXIO ; + }return error; }
@@ -318,6 +326,7 @@ fs_table_initialise_mounts( {struct statfs *stats;int i, count, error, found; +char *rpath =NULL ; error = found =0 ;if ((count =getmntinfo (&stats,0 )) <0 ) {
@@ -326,24 +335,31 @@ fs_table_initialise_mounts(return 0 ; } +if (path) +if ((rpath =realpath (path,NULL )) ==NULL ) +return ENOENT ; +for (i =0 ; i < count; i++) {if (strcmp (stats[i].f_fstypename,"xfs" ) !=0 )continue ; -if (path && - ((strcmp (path, stats[i].f_mntonname) !=0 ) && - (strcmp (path, stats[i].f_mntfromname) !=0 ))) +if (rpath && + ((strcmp (rpath, stats[i].f_mntonname) !=0 ) && + (strcmp (rpath, stats[i].f_mntfromname) !=0 )))continue ;/* TODO: external log and realtime device? */ (void )fs_table_insert (stats[i].f_mntonname,0 ,FS_MOUNT_POINT , stats[i].f_mntfromname,NULL ,NULL ); -if (path) { +if (rpath) { found =1 ;break ; } } -if (path && !found) - error =ENXIO ; +if (rpath) { +free (rpath); +if (!found) + error =ENXIO ; + }return error; }
Signature · 6 lines
1.7.10.2 _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Quoted 7 lines · Satoru Takeuchi
From: Satoru Takeuchi <[email protected]>
Current
xfs_quotaonly accepts absolute path as its `path' arguments. This patch adds the support of relative path for user's convenience.Signed-off-by Satoru Takeuchi <[email protected]>
Using realpath() to handle the path being passed by user, not only makes able the usage of relative paths, but also fixes the problem in having a "/" at the end of the path. For those who abuses of TABs, this is very annoying.
Looks good,
Quoted 19 lines
--- libxcmd/paths.c | 42 +++++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-)libxcmd/paths.c +1
-0@@ -27,6 +27,7 @@#include <xfs/path.h> #include <xfs/input.h> #include <xfs/project.h> +#include <limits.h> extern char *progname;xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Signature · 6 lines
Carlos _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Hi Carlos,
Quoted 7 lines · Carlos Maiolino
Quoted 5 lines · Satoru Takeuchi
From: Satoru Takeuchi <[email protected]>
Current
xfs_quotaonly accepts absolute path as its `path' arguments. This patch adds the support of relative path for user's convenience.
Quoted 6 lines
Quoted 2 lines
Signed-off-by Satoru Takeuchi <[email protected]>Using
realpath()to handle the path being passed by user, not only makes able the usage of relative paths, but also fixes the problem in having a "/" at the end of the path. For those who abuses of TABs, this is very annoying.
Ah, I also tend to fix the trailing "/" at the end of the path as you said. But I forgot to mentioned about it by the patch description :-)
Thanks,
Satoru
Quoted 20 lines
Looks good,
Reviewed-by Carlos Maiolino <[email protected]>Tested-by Carlos Maiolino <[email protected]>Quoted 14 lines
--- libxcmd/paths.c | 42 +++++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-)libxcmd/paths.c +1
-0@@ -27,6 +27,7 @@#include <xfs/path.h> #include <xfs/input.h> #include <xfs/project.h> +#include <limits.h>
Quoted 6 lines
Quoted 5 lines
libxcmd/paths.c +0
-0extern char *progname;xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs