From e5183747da2b268f53a9464fda5fd6b4856c62a4 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Wed, 2 Feb 2005 11:14:04 +0000 Subject: [PATCH] whitespace fixes --- ChangeLog | 104 +++++++++++++++++++++--------------------- FAQ | 32 ++++++------- Filesystems | 10 ++-- README | 4 +- configure.in | 4 +- example/fusexmp.c | 14 +++--- example/hello.c | 2 +- example/null.c | 2 +- include/fuse.h | 58 ++++++++++++------------ kernel/configure.ac | 4 +- lib/fuse.c | 108 ++++++++++++++++++++++---------------------- lib/fuse_mt.c | 6 +-- lib/helper.c | 26 +++++------ lib/mount.c | 6 +-- util/fusermount.c | 57 ++++++++++++----------- 15 files changed, 218 insertions(+), 219 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3dcc915..4509318 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,7 +4,7 @@ 2005-01-28 Miklos Szeredi - * Fix compilation on 2.6.7 + * Fix compilation on 2.6.7 2005-01-26 Miklos Szeredi @@ -47,14 +47,14 @@ * fusermount: remove capability setting, which was the cause of problems for some users. It seems that FS related capabilities - are removed by setfsuid(), so this isn't even needed. + are removed by setfsuid(), so this isn't even needed. 2005-01-15 Miklos Szeredi * fix compilation on 2.4 kernels (reported by Valient Gough) * fix failure to unmount bug (found by David Shaw) - + * fusermount: improve parsing of /etc/fuse.conf 2005-01-13 Miklos Szeredi @@ -141,7 +141,7 @@ These will cause some regressions, but stability is considered more important. If any of these features turns out to be important, it can be readded with the deadlock problems addressed. - + * Make all requests interruptible (only with SIGKILL currently). This can be used to break any deadlock produced by the userspace filesystem accessing it's own exported files. The RELEASE request @@ -245,7 +245,7 @@ * fusermount: fix warning if fuse module is not loaded * kernel: use /dev/fuse on 2.4 too - + 2004-11-26 Miklos Szeredi * libfuse API change: open, read, write, flush, fsync and release @@ -347,7 +347,7 @@ usually needs to be set to "/usr/local/lib/pkgconfig". * fuse.h is now installed in ${prefix}/include/fuse/ - + 2004-11-02 Miklos Szeredi * Added "use_ino" mount option. This enables the filesystems to @@ -406,21 +406,21 @@ * Fix mounting and umounting FUSE filesystem under another FUSE filesystem by non-root (bug spotted by Valient Gough) - + 2004-09-21 Miklos Szeredi * Fix deadlock in case of memory allocation failure. Patch by Christian Magnusson - + 2004-09-16 Miklos Szeredi * Check memory allocation failures in libfuse - + 2004-09-14 Miklos Szeredi * Check temporary file creation failure in do_getdir(). Bug spotted by Terje Oseberg - + 2004-09-13 Miklos Szeredi * Allow "large_read" option for 2.6 kernels but warn of deprecation @@ -429,7 +429,7 @@ This is only a temporary solution * Support compiling FUSE kernel module on 2.4.x UML kernels - + 2004-09-09 Miklos Szeredi * Fix bug in case two FORGETs for the same node are executed in @@ -441,13 +441,13 @@ * Add -D_REENTRANT to the compile flags * Add documentation of fuse internals by Terje Oseberg - + 2004-08-16 Miklos Szeredi * Change release method to be non-interruptible. Fixes bug causing missing release() call when program which has opened files is killed (reported by Franco Broi and David Shaw) - + 2004-07-29 Miklos Szeredi * Add fuse_invalidate() to library API @@ -465,7 +465,7 @@ * Extend kernel API with file handles. A file handle is returned by open, and passed to read, write, flush, fsync and release. This is currently only used for debug output in the library. - + * Security changes: * Change the current directory to the mountpoint before checking @@ -484,16 +484,16 @@ * Clean up mount option passing to fusermount and to fuse_new() BEWARE: this changes the userspace API slightly, and the command line usage of programs using fuse_main() - + 2004-07-20 Miklos Szeredi * Optimize reading under 2.6 kernels by issuing multiple page asynchronous read requests - + 2004-07-18 Miklos Szeredi * Only use redirty_page_for_writepage() for kernels >= 2.6.6 - + 2004-07-16 Miklos Szeredi * Separate directory entry and inode attribute validity timer @@ -516,13 +516,13 @@ * If temporary buffer allocation fails in raw read, fall back to a smaller buffer - + 2004-07-12 Miklos Szeredi * Fix bug in do_open() in libfuse: open count was incremented after the reply is sent so it could race with unlink/forget and cause an abort. - + 2004-07-08 Miklos Szeredi * When performing create or remove operation, refresh the parent's @@ -606,24 +606,24 @@ * Work with newer libtool (1.5a) * Check for st_atim member of struct stat - + 2004-06-22 Miklos Szeredi * No request allocation needed on inode and file release - + 2004-06-21 Miklos Szeredi * Fix possible inode leak in userspace in case of unfinished lookup/mknod/mkdir/symlink/link operation. - + 2004-06-20 Miklos Szeredi * Fix some races and cleanups in fuse_read_super() - + 2004-06-19 Miklos Szeredi * Requests are allocated at open time - + 2004-06-03 Miklos Szeredi * Build shared library as well as static (using libtool) @@ -643,23 +643,23 @@ * Don't call getdir method from open() only from first readdir(). Open is sometimes just used to store the current directory (e.g. find) - + 2004-05-18 Miklos Szeredi * Added flush() call - + 2004-05-04 Miklos Szeredi * Extended attributes support for 2.4 (patch by Cody Pisto) - + 2004-04-20 Miklos Szeredi * Fixed parser with modversions (Mattias Wadman) - + 2004-04-19 Miklos Szeredi * Added mount option parser to 2.4 build - + 2004-04-13 Miklos Szeredi * Replaced binary mount data with text options @@ -709,7 +709,7 @@ 2004-03-02 Miklos Szeredi * fuse_main() adds "-n progname" to the fusermount command line - + * More kernel interface changes: * Lookup/getattr return cache timeout values @@ -750,11 +750,11 @@ * rdev size increased to 32 bits for mknod * kernel interface version changed to 3.1 - + 2004-02-18 Miklos Szeredi * user-mount upgraded for 2.6.3 kernel - + 2004-02-17 Miklos Szeredi * Added user-mount.2.6.2-rc3.patch @@ -763,11 +763,11 @@ * fusermount should allow (un)mounting for non-root even if not suid-root - + 2004-02-12 Miklos Szeredi * Remove MS_PERMISSION mount flag (that means something else now) - + 2004-02-10 Miklos Szeredi * Added check for i_size_read/write functions to configure.in @@ -784,15 +784,15 @@ * Use i_size_read/write for accessing inode->i_size * Make loopback mount of a fuse file work - + 2004-02-04 Miklos Szeredi * Released 1.1 - + 2004-01-29 Miklos Szeredi * Properly check if the inode exists in fuse_invalidate - + 2004-01-27 Miklos Szeredi * Added -q option for fusermount @@ -812,11 +812,11 @@ * Fix typo (thanks Marcos Dione) * Compile fixes for 2.4 kernels - + 2004-01-23 Miklos Szeredi * Fix CONFIG_MODVERSIONS compile on 2.6 - + 2004-01-22 Miklos Szeredi * Write all pending data before a RELEASE operation @@ -842,7 +842,7 @@ * Fix 32-bit dev handling in getattr and mknod for 2.6 kernels. (Note: the mknod method does not yet use 32bit device number) - + 2004-01-13 Miklos Szeredi * Code cleanups @@ -859,7 +859,7 @@ 2004-01-05 Miklos Szeredi - * Added -d option to fusermount + * Added -d option to fusermount 2003-12-15 Miklos Szeredi @@ -875,7 +875,7 @@ 2003-12-12 Miklos Szeredi - * Make it compile on 2.4.19. + * Make it compile on 2.4.19. * Add fsync operation (write file failed on xemacs & vi) @@ -903,7 +903,7 @@ - Added '__init__' handler to base Fuse class, which allows your Python class to know the mountpoint and mount args, as attributes myfs.mountpoint, myfs.optlist, myfs.optdict - + * General: - added 'mount.fuse' script (in util/ dir), which is meant to be symlinked from /sbin, and which allows FUSE filesystems to @@ -924,11 +924,11 @@ * Mtab handling fix in fusermount by "Valient Gough" (SF patch #766443) - + 2003-10-13 Miklos Szeredi * Error code fixes in kernel module - + 2003-10-04 Miklos Szeredi * kernel version detection fix @@ -1032,7 +1032,7 @@ 2002-01-09 Miklos Szeredi * Version 0.95 released - + 2002-01-09 Miklos Szeredi * Revaidate all path components not just the last, this means a @@ -1043,7 +1043,7 @@ * Update and fix python interface 2002-01-07 Mark Glines - + * Added statfs() support to kernel, lib, examples, and perl! 2001-12-26 Miklos Szeredi @@ -1053,10 +1053,10 @@ * Ported to Compaq IPAQ 2001-12-20 Miklos Szeredi - + * Added function fuse_get_context() to library API (inspired by - patch from Matt Ryan) - + patch from Matt Ryan) + * Added flags to fusermount and to kernel interface to control permission checking @@ -1069,7 +1069,7 @@ 2001-12-02 Miklos Szeredi - * Added perl bindings by Mark Glines + * Added perl bindings by Mark Glines 2001-11-21 Miklos Szeredi @@ -1078,7 +1078,7 @@ * fuse_main() helper function added 2001-11-18 Miklos Szeredi - + * Optimized read/write operations, so that minimal copying of data is done diff --git a/FAQ b/FAQ index 3b8cf5a..4a28d43 100644 --- a/FAQ +++ b/FAQ @@ -29,10 +29,10 @@ Subject: close() not in struct fuse_operations > Is there a reason for 'close' not being one of the > fuse_operations? I'd need to know when files are > closed... - + It's not easy. Consider mmap(): if you have a memory file, even after -closing it, you can read or write the file through memory. - +closing it, you can read or write the file through memory. + Despite this there are close()-like operations: flush and release. Flush gets called on each close() and release gets called when there are no more uses of a file, including memory mappings. @@ -58,7 +58,7 @@ writing for example, and use that information for finally flushing dirty data of a file. > So it appears that there may even be additional file operations after -> one or more of the release calls.. +> one or more of the release calls.. That is expected also. It would be a bug if there were reads/writes after the last release, or if the number of releases didn't match the @@ -82,7 +82,7 @@ In release() the error value is ignored, and not every close will cause a release. Consider this: - process opens a file - - process forks + - process forks - parent closes the file - child closes the file @@ -125,7 +125,7 @@ Subject: Short reads > bytes. What I expected to see was the kernel to then issue a read for > length 65536 and offset 10. Instead what I saw in the result was the > 10 bytes I returned, followed by 65526 zero bytes. -> +> > Is this the intended behavior? Yes. You can easily program around it with a for-loop in your read @@ -135,14 +135,14 @@ function. > difference, I'd like to suggest doing it the other way: many people > (like me) implement their fuse read function in terms of read(), and > read() can return early. - -No. Read from a pipe/socket can be short, but read from a file can't. + +No. Read from a pipe/socket can be short, but read from a file can't. --------------------------------------------------------------------------- Subject: protocol error -> I'm having trouble with file writing. I can -> 'echo something > file' to a file, but +> I'm having trouble with file writing. I can +> 'echo something > file' to a file, but > 'cp file something' or 'cat something > file' > gives a protocol error. @@ -176,14 +176,14 @@ Subject: Uid/gid/pid > Is there any easy way to know the uid of a reader? For example, let's > say I wanted to create a file that contained 'foo' for uid 1, but > 'bar' for uid 2. - -Yes: - + +Yes: + fuse_get_context()->uid --------------------------------------------------------------------------- -Subject: 'find' command +Subject: 'find' command > I'm having trouble getting the find command to search through fuse @@ -208,7 +208,7 @@ Subject: File system interactivity > question to the terminal that issued the request. > > Is there a way I can achieve this goal? - + It would not be possible generally speaking, since it might not be an interactive program but rather a daemon, or a GUI program creating the file. However you should be able to get the PID for the caller, and @@ -217,4 +217,4 @@ something similar. Perhaps it would be better to redesign your program not to have such interactivity anyway, try to use e.g. extended attributes of files to set per-file options, or a configuration file for your filesystem. - + diff --git a/Filesystems b/Filesystems index 3bd9826..9fb602c 100644 --- a/Filesystems +++ b/Filesystems @@ -51,7 +51,7 @@ Download: http://www.select-tech.si/fuse/ Alternate download: http://www.cl.cam.ac.uk/~tdm25/fuse-j/ -Description: +Description: FUSE-J provides Java binding for FUSE. It comes with the "proof-of-concept" ZIP filesystem which seems to be pretty stable. @@ -92,10 +92,10 @@ Homepage: http://www.freenet.org.nz/phonebook Description: - PhoneBook is expressly designed for use in situations where someone can - be under pressure (legal, military and/or criminal) to disclose - decryption keys, and has a 'chaffing' scheme whereby the user can - disclose only passphrases for non-sensitive material, and credibly deny + PhoneBook is expressly designed for use in situations where someone can + be under pressure (legal, military and/or criminal) to disclose + decryption keys, and has a 'chaffing' scheme whereby the user can + disclose only passphrases for non-sensitive material, and credibly deny the existence of anything else. ============================================================================== diff --git a/README b/README index 20ee100..14eed40 100644 --- a/README +++ b/README @@ -60,7 +60,7 @@ Security If you run 'make install', the fusermount program is installed set-user-id to root. This is done to allow normal users to mount -their own filesystem implementations. +their own filesystem implementations. There must however be some limitations, in order to prevent Bad User from doing nasty things. Currently those limitations are: @@ -176,4 +176,4 @@ debug fsname=NAME Sets the filesystem name. The default is the program name. - + diff --git a/configure.in b/configure.in index 7ad5f42..33f7173 100644 --- a/configure.in +++ b/configure.in @@ -7,10 +7,10 @@ m4_ifdef([LT_INIT], [AC_PROG_LIBTOOL]) AC_PROG_CC -# compatibility for automake < 1.8 +# compatibility for automake < 1.8 if test -z "$mkdir_p"; then mkdir_p="../mkinstalldirs" - AC_SUBST(mkdir_p) + AC_SUBST(mkdir_p) fi CFLAGS="-Wall -W -g -O2" diff --git a/example/fusexmp.c b/example/fusexmp.c index d850bc6..3230c36 100644 --- a/example/fusexmp.c +++ b/example/fusexmp.c @@ -153,7 +153,7 @@ static int xmp_chmod(const char *path, mode_t mode) res = chmod(path, mode); if(res == -1) return -errno; - + return 0; } @@ -171,7 +171,7 @@ static int xmp_chown(const char *path, uid_t uid, gid_t gid) static int xmp_truncate(const char *path, off_t size) { int res; - + res = truncate(path, size); if(res == -1) return -errno; @@ -182,7 +182,7 @@ static int xmp_truncate(const char *path, off_t size) static int xmp_utime(const char *path, struct utimbuf *buf) { int res; - + res = utime(path, buf); if(res == -1) return -errno; @@ -196,7 +196,7 @@ static int xmp_open(const char *path, struct fuse_file_info *fi) int res; res = open(path, fi->flags); - if(res == -1) + if(res == -1) return -errno; close(res); @@ -217,7 +217,7 @@ static int xmp_read(const char *path, char *buf, size_t size, off_t offset, res = pread(fd, buf, size, offset); if(res == -1) res = -errno; - + close(fd); return res; } @@ -236,7 +236,7 @@ static int xmp_write(const char *path, const char *buf, size_t size, res = pwrite(fd, buf, size, offset); if(res == -1) res = -errno; - + close(fd); return res; } @@ -256,7 +256,7 @@ static int xmp_release(const char *path, struct fuse_file_info *fi) { /* Just a stub. This method is optional and can safely be left unimplemented */ - + (void) path; (void) fi; return 0; diff --git a/example/hello.c b/example/hello.c index 82da26e..9e4099b 100644 --- a/example/hello.c +++ b/example/hello.c @@ -65,7 +65,7 @@ static int hello_read(const char *path, char *buf, size_t size, off_t offset, (void) fi; if(strcmp(path, hello_path) != 0) return -ENOENT; - + len = strlen(hello_str); if (offset < len) { if (offset + size > len) diff --git a/example/null.c b/example/null.c index c4e505b..d58feab 100644 --- a/example/null.c +++ b/example/null.c @@ -18,7 +18,7 @@ static int null_getattr(const char *path, struct stat *stbuf) { if(strcmp(path, "/") != 0) return -ENOENT; - + stbuf->st_mode = S_IFREG | 0644; stbuf->st_nlink = 1; stbuf->st_uid = getuid(); diff --git a/include/fuse.h b/include/fuse.h index b0dfee4..fffca2e 100644 --- a/include/fuse.h +++ b/include/fuse.h @@ -51,7 +51,7 @@ struct fuse; typedef struct fuse_dirhandle *fuse_dirh_t; /** Function to add an entry in a getdir() operation - * + * * @param h the handle passed to the getdir() operation * @param name the file name of the directory entry * @param type the file type (0 if unknown) see @@ -82,7 +82,7 @@ struct fuse_file_info { * Most of these should work very similarly to the well known UNIX * file system operations. A major exception is that instead of * returning an error in 'errno', the operation should return the - * negated error value (-errno) directly. + * negated error value (-errno) directly. * * All methods are optional, but some are essential for a useful * filesystem (e.g. getattr). Flush, release and fsync are special @@ -99,7 +99,7 @@ struct fuse_operations { int (*getattr) (const char *, struct stat *); /** Read the target of a symbolic link - * + * * The buffer should be filled with a null terminated string. The * buffer size argument includes the space for the terminating * null character. If the linkname is too long to fit in the @@ -140,19 +140,19 @@ struct fuse_operations { /** Create a hard link to a file */ int (*link) (const char *, const char *); - + /** Change the permission bits of a file */ int (*chmod) (const char *, mode_t); - + /** Change the owner and group of a file */ int (*chown) (const char *, uid_t, gid_t); - + /** Change the size of a file */ int (*truncate) (const char *, off_t); - + /** Change the access and/or modification times of a file */ int (*utime) (const char *, struct utimbuf *); - + /** File open operation * * No creation, or trunctation flags (O_CREAT, O_EXCL, O_TRUNC) @@ -174,8 +174,8 @@ struct fuse_operations { */ int (*read) (const char *, char *, size_t, off_t, struct fuse_file_info *); - /** Write data to an open file - * + /** Write data to an open file + * * Write should return exactly the number of bytes requested * except on error. An exception to this is when the 'direct_io' * mount option is specified (see read operation). @@ -184,13 +184,13 @@ struct fuse_operations { struct fuse_file_info *); /** Get file system statistics - * + * * The 'f_type' and 'f_fsid' fields are ignored */ int (*statfs) (const char *, struct statfs *); - /** Possibly flush cached data - * + /** Possibly flush cached data + * * BIG NOTE: This is not equivalent to fsync(). It's not a * request to sync dirty data. * @@ -199,7 +199,7 @@ struct fuse_operations { * has cached dirty data, this is a good place to write back data * and return any errors. Since many applications ignore close() * errors this is not always useful. - * + * * NOTE: The flush() method may be called more than once for each * open(). This happens if more than one file descriptor refers * to an opened file due to dup(), dup2() or fork() calls. It is @@ -210,7 +210,7 @@ struct fuse_operations { int (*flush) (const char *, struct fuse_file_info *); /** Release an open file - * + * * Release is called when there are no more references to an open * file: all file descriptors are closed and all memory mappings * are unmapped. @@ -229,21 +229,21 @@ struct fuse_operations { * should be flushed, not the meta data. */ int (*fsync) (const char *, int, struct fuse_file_info *); - + /** Set extended attributes */ int (*setxattr) (const char *, const char *, const char *, size_t, int); - + /** Get extended attributes */ int (*getxattr) (const char *, const char *, char *, size_t); - + /** List extended attributes */ int (*listxattr) (const char *, char *, size_t); - + /** Remove extended attributes */ int (*removexattr) (const char *, const char *); }; -/** Extra context that may be needed by some filesystems +/** Extra context that may be needed by some filesystems * * The uid, gid and pid fields are not filled in case of a writepage * operation. @@ -251,7 +251,7 @@ struct fuse_operations { struct fuse_context { /** Pointer to the fuse object */ struct fuse *fuse; - + /** User ID of the calling process */ uid_t uid; @@ -270,7 +270,7 @@ struct fuse_context { * * This is for the lazy. This is all that has to be called from the * main() function. - * + * * This function does the following: * - parses command line options (-d -s and -h) * - passes relevant mount options to the fuse_mount() @@ -284,7 +284,7 @@ struct fuse_context { * * @param argc the argument counter passed to the main() function * @param argv the argument vector passed to the main() function - * @param op the file system operation + * @param op the file system operation * @return 0 on success, nonzero on failure */ /* @@ -325,11 +325,11 @@ void fuse_unmount(const char *mountpoint); * @param op_size the size of the fuse_operations structure * @return the created FUSE handle */ -struct fuse *fuse_new(int fd, const char *opts, +struct fuse *fuse_new(int fd, const char *opts, const struct fuse_operations *op, size_t op_size); /** - * Destroy the FUSE handle. + * Destroy the FUSE handle. * * The filesystem is not unmounted. * @@ -341,7 +341,7 @@ void fuse_destroy(struct fuse *f); * FUSE event loop. * * Requests from the kernel are processed, and the apropriate - * operations are called. + * operations are called. * * @param f the FUSE handle * @return 0 if no error occured, -1 otherwise @@ -372,12 +372,12 @@ int fuse_loop_mt(struct fuse *f); /** * Get the current context - * + * * The context is only valid for the duration of a filesystem * operation, and thus must not be stored and used later. * * @param f the FUSE handle - * @return the context + * @return the context */ struct fuse_context *fuse_get_context(void); @@ -402,7 +402,7 @@ int fuse_is_lib_option(const char *opt); /** * The real main function - * + * * Do not call this directly, use fuse_main() */ int fuse_main_real(int argc, char *argv[], const struct fuse_operations *op, diff --git a/kernel/configure.ac b/kernel/configure.ac index b27e6df..4b906e5 100644 --- a/kernel/configure.ac +++ b/kernel/configure.ac @@ -32,7 +32,7 @@ fi if test -z "$kernsrcver"; then AC_MSG_RESULT([Not found]) AC_MSG_ERROR([ -*** Cannot determine the version of the linux kernel source. Please +*** Cannot determine the version of the linux kernel source. Please *** configure the kernel before running this script]) fi AC_MSG_RESULT([$kernsrcver]) @@ -86,7 +86,7 @@ if test "$ENABLE_FUSE_MODULE" = y; then else AC_MSG_RESULT([no]) fi - + isuml=no KERNELMAKE_PARAMS= KERNELCPPFLAGS= diff --git a/lib/fuse.c b/lib/fuse.c index 004095c..0980388 100644 --- a/lib/fuse.c +++ b/lib/fuse.c @@ -77,11 +77,11 @@ struct fuse_getdir_out { __u32 fd; }; -#define FUSE_GETDIR 7 +#define FUSE_GETDIR 7 static const char *opname(enum fuse_opcode opcode) { - switch (opcode) { + switch (opcode) { case FUSE_LOOKUP: return "LOOKUP"; case FUSE_FORGET: return "FORGET"; case FUSE_GETATTR: return "GETATTR"; @@ -136,7 +136,7 @@ static struct node *get_node_nocheck(struct fuse *f, nodeid_t nodeid) for (node = f->id_table[hash]; node != NULL; node = node->id_next) if (node->nodeid == nodeid) return node; - + return NULL; } @@ -162,7 +162,7 @@ static void unhash_id(struct fuse *f, struct node *node) size_t hash = node->nodeid % f->id_table_size; struct node **nodep = &f->id_table[hash]; - for (; *nodep != NULL; nodep = &(*nodep)->id_next) + for (; *nodep != NULL; nodep = &(*nodep)->id_next) if (*nodep == node) { *nodep = node->id_next; return; @@ -173,7 +173,7 @@ static void hash_id(struct fuse *f, struct node *node) { size_t hash = node->nodeid % f->id_table_size; node->id_next = f->id_table[hash]; - f->id_table[hash] = node; + f->id_table[hash] = node; } static unsigned int name_hash(struct fuse *f, nodeid_t parent, const char *name) @@ -194,7 +194,7 @@ static void unhash_name(struct fuse *f, struct node *node) if (node->name) { size_t hash = name_hash(f, node->parent, node->name); struct node **nodep = &f->name_table[hash]; - + for (; *nodep != NULL; nodep = &(*nodep)->name_next) if (*nodep == node) { *nodep = node->name_next; @@ -270,7 +270,7 @@ static struct node *find_node(struct fuse *f, nodeid_t parent, char *name, struct node *node; int mode = attr->mode & S_IFMT; int rdev = 0; - + if (S_ISCHR(mode) || S_ISBLK(mode)) rdev = attr->rdev; @@ -278,12 +278,12 @@ static struct node *find_node(struct fuse *f, nodeid_t parent, char *name, node = lookup_node(f, parent, name); if (node != NULL) { if (!(f->flags & FUSE_USE_INO)) - attr->ino = node->nodeid; + attr->ino = node->nodeid; } else { node = (struct node *) calloc(1, sizeof(struct node)); if (node == NULL) goto out_err; - + node->refctr = 1; node->nodeid = next_id(f); if (!(f->flags & FUSE_USE_INO)) @@ -324,7 +324,7 @@ static char *get_path_name(struct fuse *f, nodeid_t nodeid, const char *name) char buf[FUSE_MAX_PATH]; char *s = buf + FUSE_MAX_PATH - 1; struct node *node; - + *s = '\0'; if (name != NULL) { @@ -340,7 +340,7 @@ static char *get_path_name(struct fuse *f, nodeid_t nodeid, const char *name) s = NULL; break; } - + s = add_name(buf, s, node->name); if (s == NULL) break; @@ -392,7 +392,7 @@ static int rename_node(struct fuse *f, nodeid_t olddir, const char *oldname, struct node *node; struct node *newnode; int err = 0; - + pthread_mutex_lock(&f->lock); node = lookup_node(f, olddir, oldname); newnode = lookup_node(f, newdir, newname); @@ -407,13 +407,13 @@ static int rename_node(struct fuse *f, nodeid_t olddir, const char *oldname, } unhash_name(f, newnode); } - + unhash_name(f, node); if (hash_name(f, node, newdir, newname) == -1) { err = -ENOMEM; goto out; } - + if (hide) node->is_hidden = 1; @@ -485,7 +485,7 @@ static int send_reply_raw(struct fuse *f, char *outbuf, size_t outsize) out->unique, out->error, strerror(-out->error), outsize); fflush(stdout); } - + /* This needs to be done before the reply, otherwise the scheduler could play tricks with us, and only let the counter be increased long after the operation is done */ @@ -529,7 +529,7 @@ static int send_reply(struct fuse *f, struct fuse_in_header *in, int error, out->error = error; if (argsize != 0) memcpy(outbuf + sizeof(struct fuse_out_header), arg, argsize); - + res = send_reply_raw(f, outbuf, outsize); free(outbuf); } @@ -576,11 +576,11 @@ static char *hidden_name(struct fuse *f, nodeid_t dir, const char *oldname, newnode = lookup_node(f, dir, newname); } while(newnode); pthread_mutex_unlock(&f->lock); - + newpath = get_path_name(f, dir, newname); if (!newpath) break; - + res = f->op.getattr(newpath, &buf); if (res != 0) break; @@ -714,7 +714,7 @@ static int do_chmod(struct fuse *f, const char *path, struct fuse_attr *attr) res = f->op.chmod(path, attr->mode); return res; -} +} static int do_chown(struct fuse *f, const char *path, struct fuse_attr *attr, int valid) @@ -722,7 +722,7 @@ static int do_chown(struct fuse *f, const char *path, struct fuse_attr *attr, int res; uid_t uid = (valid & FATTR_UID) ? attr->uid : (uid_t) -1; gid_t gid = (valid & FATTR_GID) ? attr->gid : (gid_t) -1; - + res = -ENOSYS; if (f->op.chown) res = f->op.chown(path, uid, gid); @@ -776,7 +776,7 @@ static void do_setattr(struct fuse *f, struct fuse_in_header *in, res = do_chown(f, path, attr, valid); if (!res && (valid & FATTR_SIZE)) res = do_truncate(f, path, attr); - if (!res && (valid & (FATTR_ATIME | FATTR_MTIME)) == + if (!res && (valid & (FATTR_ATIME | FATTR_MTIME)) == (FATTR_ATIME | FATTR_MTIME)) res = do_utime(f, path, attr); if (!res) { @@ -1017,7 +1017,7 @@ static void do_rename(struct fuse *f, struct fuse_in_header *in, res = -ENOSYS; if (f->op.rename) { res = 0; - if (!(f->flags & FUSE_HARD_REMOVE) && + if (!(f->flags & FUSE_HARD_REMOVE) && is_open(f, newdir, newname)) res = hide_node(f, newpath, newdir, newname); if (res == 0) { @@ -1030,7 +1030,7 @@ static void do_rename(struct fuse *f, struct fuse_in_header *in, } free(oldpath); } - send_reply(f, in, res, NULL, 0); + send_reply(f, in, res, NULL, 0); } static void do_link(struct fuse *f, struct fuse_in_header *in, @@ -1096,7 +1096,7 @@ static void do_open(struct fuse *f, struct fuse_in_header *in, printf("OPEN[%lu] flags: 0x%x\n", fi.fh, arg->flags); fflush(stdout); } - + pthread_mutex_lock(&f->lock); res2 = send_reply(f, in, res, &outarg, sizeof(outarg)); if(res2 == -ENOENT) { @@ -1173,10 +1173,10 @@ static void do_release(struct fuse *f, struct fuse_in_header *in, else if (path) ((struct fuse_operations_compat2 *) &f->op)->release(path, fi.flags); } - + if(unlink_hidden && path) f->op.unlink(path); - + if (path) free(path); @@ -1197,7 +1197,7 @@ static void do_read(struct fuse *f, struct fuse_in_header *in, size_t size; size_t outsize; struct fuse_file_info fi; - + memset(&fi, 0, sizeof(fi)); fi.fh = arg->fh; @@ -1209,13 +1209,13 @@ static void do_read(struct fuse *f, struct fuse_in_header *in, (unsigned long) arg->fh, arg->size, arg->offset); fflush(stdout); } - + res = -ENOSYS; if (f->op.read) res = f->op.read(path, buf, arg->size, arg->offset, &fi); free(path); } - + size = 0; if (res >= 0) { size = res; @@ -1230,7 +1230,7 @@ static void do_read(struct fuse *f, struct fuse_in_header *in, out->unique = in->unique; out->error = res; outsize = sizeof(struct fuse_out_header) + size; - + send_reply_raw(f, outbuf, outsize); free(outbuf); } @@ -1263,8 +1263,8 @@ static void do_write(struct fuse *f, struct fuse_in_header *in, res = f->op.write(path, PARAM(arg), arg->size, arg->offset, &fi); free(path); } - - if (res >= 0) { + + if (res >= 0) { outarg.size = res; res = 0; } @@ -1369,7 +1369,7 @@ static void do_setxattr(struct fuse *f, struct fuse_in_header *in, if (f->op.setxattr) res = f->op.setxattr(path, name, value, arg->size, arg->flags); free(path); - } + } send_reply(f, in, res, NULL, 0); } @@ -1386,7 +1386,7 @@ static int common_getxattr(struct fuse *f, struct fuse_in_header *in, if (f->op.getxattr) res = f->op.getxattr(path, name, value, size); free(path); - } + } return res; } @@ -1400,7 +1400,7 @@ static void do_getxattr_read(struct fuse *f, struct fuse_in_header *in, else { struct fuse_out_header *out = (struct fuse_out_header *) outbuf; char *value = outbuf + sizeof(struct fuse_out_header); - + res = common_getxattr(f, in, name, value, size); size = 0; if (res > 0) { @@ -1410,7 +1410,7 @@ static void do_getxattr_read(struct fuse *f, struct fuse_in_header *in, memset(out, 0, sizeof(struct fuse_out_header)); out->unique = in->unique; out->error = res; - + send_reply_raw(f, outbuf, sizeof(struct fuse_out_header) + size); free(outbuf); } @@ -1434,7 +1434,7 @@ static void do_getxattr(struct fuse *f, struct fuse_in_header *in, struct fuse_getxattr_in *arg) { char *name = PARAM(arg); - + if (arg->size) do_getxattr_read(f, in, name, arg->size); else @@ -1454,7 +1454,7 @@ static int common_listxattr(struct fuse *f, struct fuse_in_header *in, if (f->op.listxattr) res = f->op.listxattr(path, list, size); free(path); - } + } return res; } @@ -1468,7 +1468,7 @@ static void do_listxattr_read(struct fuse *f, struct fuse_in_header *in, else { struct fuse_out_header *out = (struct fuse_out_header *) outbuf; char *list = outbuf + sizeof(struct fuse_out_header); - + res = common_listxattr(f, in, list, size); size = 0; if (res > 0) { @@ -1478,7 +1478,7 @@ static void do_listxattr_read(struct fuse *f, struct fuse_in_header *in, memset(out, 0, sizeof(struct fuse_out_header)); out->unique = in->unique; out->error = res; - + send_reply_raw(f, outbuf, sizeof(struct fuse_out_header) + size); free(outbuf); } @@ -1519,7 +1519,7 @@ static void do_removexattr(struct fuse *f, struct fuse_in_header *in, if (f->op.removexattr) res = f->op.removexattr(path, name); free(path); - } + } send_reply(f, in, res, NULL, 0); } @@ -1558,7 +1558,7 @@ static void do_opendir(struct fuse *f, struct fuse_in_header *in, dh->fuse = f; dh->fp = tmpfile(); dh->filled = 0; - + res = -EIO; if (dh->fp == NULL) { perror("fuse: failed to create temporary file"); @@ -1606,7 +1606,7 @@ static void do_readdir(struct fuse *f, struct fuse_in_header *in, out->unique = in->unique; out->error = res; outsize = sizeof(struct fuse_out_header) + size; - + send_reply_raw(f, outbuf, outsize); free(outbuf); } @@ -1654,9 +1654,9 @@ void fuse_process_cmd(struct fuse *f, struct fuse_cmd *cmd) ctx->uid = in->uid; ctx->gid = in->gid; ctx->pid = in->pid; - + argsize = cmd->buflen - sizeof(struct fuse_in_header); - + switch (in->opcode) { case FUSE_LOOKUP: do_lookup(f, in, (char *) inarg); @@ -1681,11 +1681,11 @@ void fuse_process_cmd(struct fuse *f, struct fuse_cmd *cmd) case FUSE_MKNOD: do_mknod(f, in, (struct fuse_mknod_in *) inarg); break; - + case FUSE_MKDIR: do_mkdir(f, in, (struct fuse_mkdir_in *) inarg); break; - + case FUSE_UNLINK: do_unlink(f, in, (char *) inarg); break; @@ -1695,14 +1695,14 @@ void fuse_process_cmd(struct fuse *f, struct fuse_cmd *cmd) break; case FUSE_SYMLINK: - do_symlink(f, in, (char *) inarg, + do_symlink(f, in, (char *) inarg, ((char *) inarg) + strlen((char *) inarg) + 1); break; case FUSE_RENAME: do_rename(f, in, (struct fuse_rename_in *) inarg); break; - + case FUSE_LINK: do_link(f, in, (struct fuse_link_in *) inarg); break; @@ -1806,13 +1806,13 @@ struct fuse_cmd *fuse_read_cmd(struct fuse *f) free_cmd(cmd); if (fuse_exited(f) || errno == EINTR || errno == ENOENT) return NULL; - + /* ENODEV means we got unmounted, so we silenty return failure */ if (errno != ENODEV) { /* BAD... This will happen again */ perror("fuse: reading device"); } - + fuse_exit(f); return NULL; } @@ -1824,7 +1824,7 @@ struct fuse_cmd *fuse_read_cmd(struct fuse *f) return NULL; } cmd->buflen = res; - + /* Forget is special, it can be done without messing with threads. */ if (in->opcode == FUSE_FORGET) { do_forget(f, in, (struct fuse_forget_in *) inarg); @@ -1903,7 +1903,7 @@ static int parse_lib_opts(struct fuse *f, const char *opts) fprintf(stderr, "fuse: memory allocation failed\n"); return -1; } - + while((opt = strsep(&s, ","))) { if (strcmp(opt, "debug") == 0) f->flags |= FUSE_DEBUG; @@ -1911,7 +1911,7 @@ static int parse_lib_opts(struct fuse *f, const char *opts) f->flags |= FUSE_HARD_REMOVE; else if (strcmp(opt, "use_ino") == 0) f->flags |= FUSE_USE_INO; - else + else fprintf(stderr, "fuse: warning: unknown option `%s'\n", opt); } free(xopts); diff --git a/lib/fuse_mt.c b/lib/fuse_mt.c index 131bae3..2e43671 100644 --- a/lib/fuse_mt.c +++ b/lib/fuse_mt.c @@ -101,7 +101,7 @@ static int start_thread(struct fuse_worker *w, pthread_t *thread_id) fprintf(stderr, "fuse: error creating thread: %s\n", strerror(res)); return -1; } - + pthread_detach(*thread_id); return 0; } @@ -130,7 +130,7 @@ static int mt_create_context_key() if (err) fprintf(stderr, "fuse: failed to create thread specific key: %s\n", strerror(err)); - else + else fuse_set_getcontext_func(mt_getcontext); } if (!err) @@ -155,7 +155,7 @@ int fuse_loop_mt_proc(struct fuse *f, fuse_processor_t proc, void *data) struct fuse_worker *w; int i; - w = malloc(sizeof(struct fuse_worker)); + w = malloc(sizeof(struct fuse_worker)); if (w == NULL) { fprintf(stderr, "fuse: failed to allocate worker structure\n"); return -1; diff --git a/lib/helper.c b/lib/helper.c index 365b813..879a694 100644 --- a/lib/helper.c +++ b/lib/helper.c @@ -24,7 +24,7 @@ static void usage(const char *progname) fprintf(stderr, "usage: %s mountpoint [FUSE options]\n\n", progname); - fprintf(stderr, + fprintf(stderr, "FUSE options:\n" " -d enable debug output (implies -f)\n" " -f foreground operation\n" @@ -72,7 +72,7 @@ static int set_one_signal_handler(int signal, void (*handler)(int)) perror("FUSE: cannot get old signal handler"); return -1; } - + if (old_sa.sa_handler == SIG_DFL && sigaction(signal, &sa, NULL) == -1) { perror("Cannot set signal handler"); @@ -158,7 +158,7 @@ static int fuse_parse_cmdline(int argc, const char *argv[], char **kernel_opts, int argctr; const char *basename; char *fsname_opt; - + *kernel_opts = NULL; *lib_opts = NULL; *mountpoint = NULL; @@ -181,7 +181,7 @@ static int fuse_parse_cmdline(int argc, const char *argv[], char **kernel_opts, free(fsname_opt); if (res == -1) goto err; - + for (argctr = 1; argctr < argc; argctr ++) { if (argv[argctr][0] == '-') { if (strlen(argv[argctr]) == 2) @@ -197,13 +197,13 @@ static int fuse_parse_cmdline(int argc, const char *argv[], char **kernel_opts, if (res == -1) goto err; break; - + case 'd': res = add_options(lib_opts, kernel_opts, "debug"); if (res == -1) goto err; break; - + case 'r': res = add_options(lib_opts, kernel_opts, "ro"); if (res == -1) @@ -217,11 +217,11 @@ static int fuse_parse_cmdline(int argc, const char *argv[], char **kernel_opts, case 's': *multithreaded = 0; break; - + case 'h': usage(argv[0]); goto err; - + default: invalid_option(argv, argctr); goto err; @@ -341,7 +341,7 @@ struct fuse *fuse_setup_compat2(int argc, char *argv[], char **mountpoint, int *multithreaded, int *fd) { - return fuse_setup_common(argc, argv, (struct fuse_operations *) op, + return fuse_setup_common(argc, argv, (struct fuse_operations *) op, sizeof(struct fuse_operations_compat2), mountpoint, multithreaded, fd, 21); } @@ -373,16 +373,16 @@ static int fuse_main_common(int argc, char *argv[], &multithreaded, &fd, compat); if (fuse == NULL) return 1; - + if (multithreaded) res = fuse_loop_mt(fuse); else res = fuse_loop(fuse); - + fuse_teardown(fuse, fd, mountpoint); if (res == -1) return 1; - + return 0; } @@ -402,7 +402,7 @@ int fuse_main() void fuse_main_compat1(int argc, char *argv[], const struct fuse_operations_compat1 *op) { - fuse_main_common(argc, argv, (struct fuse_operations *) op, + fuse_main_common(argc, argv, (struct fuse_operations *) op, sizeof(struct fuse_operations_compat1), 11); } diff --git a/lib/mount.c b/lib/mount.c index fb29f57..86ad2be 100644 --- a/lib/mount.c +++ b/lib/mount.c @@ -57,7 +57,7 @@ static int receive_fd(int fd) /* EOF */ return -1; } - + cmsg = CMSG_FIRSTHDR(&msg); if (!cmsg->cmsg_type == SCM_RIGHTS) { fprintf(stderr, "got control message of unknown type %d\n", @@ -71,10 +71,10 @@ void fuse_unmount(const char *mountpoint) { const char *mountprog = FUSERMOUNT_PROG; char umount_cmd[1024]; - + snprintf(umount_cmd, sizeof(umount_cmd) - 1, "%s -u -q -z %s", mountprog, mountpoint); - + umount_cmd[sizeof(umount_cmd) - 1] = '\0'; system(umount_cmd); } diff --git a/util/fusermount.c b/util/fusermount.c index 5220858..4f9ed2f 100644 --- a/util/fusermount.c +++ b/util/fusermount.c @@ -7,13 +7,13 @@ */ /* This program does the mounting and unmounting of FUSE filesystems */ -/* +/* * NOTE: This program should be part of (or be called from) /bin/mount - * + * * Unless that is done, operations on /etc/mtab are not under lock, and so * data in this file may be lost. (I will _not_ reimplement that locking, * and anyway that should be done in libc, if possible. But probably it - * isn't). + * isn't). */ #include @@ -131,7 +131,7 @@ static int add_mount(const char *fsname, const char *mnt, const char *type, strerror(errno)); return -1; } - + ent.mnt_fsname = (char *) fsname; ent.mnt_dir = (char *) mnt; ent.mnt_type = (char *) type; @@ -144,7 +144,7 @@ static int add_mount(const char *fsname, const char *mnt, const char *type, mtab, strerror(errno)); return -1; } - + endmntent(fp); return 0; } @@ -165,14 +165,14 @@ static int remove_mount(const char *mnt, int quiet, const char *mtab, strerror(errno)); return -1; } - + newfp = setmntent(mtab_new, "w"); if (newfp == NULL) { fprintf(stderr, "%s: failed to open %s: %s\n", progname, mtab_new, strerror(errno)); return -1; } - + if (getuid() != 0) { user = get_user_name(); if (user == NULL) @@ -199,11 +199,10 @@ static int remove_mount(const char *mnt, int quiet, const char *mtab, if (res != 0) { fprintf(stderr, "%s: failed to add entry to %s: %s\n", progname, mtab_new, strerror(errno)); - } } } - + endmntent(fp); endmntent(newfp); @@ -268,7 +267,7 @@ static int unmount_fuse(const char *mnt, int quiet, int lazy) int res; const char *mtab = _PATH_MOUNTED; const char *mtab_new = _PATH_MOUNTED "~fuse~"; - + res = remove_mount(mnt, quiet, mtab, mtab_new); if (res == -1) return -1; @@ -399,7 +398,7 @@ static struct mount_flags mount_flags[] = { static int find_mount_flag(const char *s, unsigned len, int *on, int *flag) { int i; - + for (i = 0; mount_flags[i].opt != NULL; i++) { const char *opt = mount_flags[i].opt; if (strlen(opt) == len && strncmp(opt, s, len) == 0) { @@ -421,7 +420,7 @@ static int add_option(char **optsp, const char *opt, unsigned expand) char *newopts; if (*optsp == NULL) newopts = strdup(opt); - else { + else { unsigned oldsize = strlen(*optsp); unsigned newsize = oldsize + 1 + strlen(opt) + expand + 1; newopts = realloc(*optsp, newsize); @@ -440,7 +439,7 @@ static int get_mnt_opts(int flags, char *opts, char **mnt_optsp) { int i; int l; - + if (!(flags & MS_RDONLY) && add_option(mnt_optsp, "rw", 0) == -1) return -1; @@ -487,13 +486,13 @@ static int do_mount(const char *mnt, const char *type, mode_t rootmode, const char *s; char *d; char *fsname = NULL; - + optbuf = malloc(strlen(opts) + 64); if (!optbuf) { fprintf(stderr, "%s: failed to allocate memory\n", progname); return -1; } - + for (s = opts, d = optbuf; *s;) { unsigned len; const char *fsname_str = "fsname="; @@ -520,7 +519,7 @@ static int do_mount(const char *mnt, const char *type, mode_t rootmode, struct utsname utsname; unsigned kmaj, kmin; res = uname(&utsname); - if (res == 0 && + if (res == 0 && sscanf(utsname.release, "%u.%u", &kmaj, &kmin) == 2 && (kmaj > 2 || (kmaj == 2 && kmin > 4))) { fprintf(stderr, "%s: note: 'large_read' mount option is deprecated for %i.%i kernels\n", progname, kmaj, kmin); @@ -617,7 +616,7 @@ static int check_perm(const char **mntp, struct stat *stbuf, int *currdir_fd) int res; const char *mnt = *mntp; const char *origmnt; - + res = lstat(mnt, stbuf); if (res == -1) { fprintf(stderr, "%s: failed to access mountpoint %s: %s\n", @@ -661,7 +660,7 @@ static int check_perm(const char **mntp, struct stat *stbuf, int *currdir_fd) progname, origmnt); return -1; } - + res = access(mnt, W_OK); if (res == -1) { fprintf(stderr, "%s: user has no write access to mountpoint %s\n", @@ -724,13 +723,13 @@ static int try_open_fuse_device(char **devp) int fd = try_open(FUSE_DEV_NEW, devp, 1); if (fd >= 0) return fd; - + if (fd == -1) { fd = try_open_new_temp(makedev(FUSE_MAJOR, FUSE_MINOR), devp); if (fd != -2) return fd; } - + fd = try_open(FUSE_DEV_OLD, devp, 1); if (fd >= 0) return fd; @@ -753,7 +752,7 @@ static int open_fuse_device(char **devp) fd = try_open_fuse_device(devp); if (fd >= 0) return fd; - + #ifndef USE_UCLIBC pid = fork(); #else @@ -771,7 +770,7 @@ static int open_fuse_device(char **devp) fd = try_open_fuse_device(devp); if (fd >= 0) return fd; - + fprintf(stderr, "%s: fuse device not found, try 'modprobe fuse' first\n", progname); return -1; @@ -845,7 +844,7 @@ static int mount_fuse(const char *mnt, const char *opts) fchdir(currdir_fd); close(currdir_fd); } - + if (geteuid() == 0) { res = add_mount(fsname, mnt, type, mnt_opts); unlock_mtab(mtablock); @@ -924,7 +923,7 @@ static char *resolve_path(const char *orig) return dst; } -static int send_fd(int sock_fd, int fd) +static int send_fd(int sock_fd, int fd) { int retval; struct msghdr msg; @@ -989,7 +988,7 @@ int main(int argc, char *argv[]) const char *opts = ""; progname = argv[0]; - + for (a = 1; a < argc; a++) { if (argv[a][0] != '-') break; @@ -1015,7 +1014,7 @@ int main(int argc, char *argv[]) case 'z': lazy = 1; break; - + case 'q': quiet = 1; break; @@ -1026,7 +1025,7 @@ int main(int argc, char *argv[]) exit(1); } } - + if (a == argc) { fprintf(stderr, "%s: missing mountpoint argument\n", progname); exit(1); @@ -1046,13 +1045,13 @@ int main(int argc, char *argv[]) if (getuid() != 0) restore_privs(); - + if (unmount) { if (geteuid() == 0) { int mtablock = lock_mtab(); res = unmount_fuse(mnt, quiet, lazy); unlock_mtab(mtablock); - } else + } else res = do_unmount(mnt, quiet, lazy); if (res == -1) exit(1); -- 2.30.2