aboutsummaryrefslogtreecommitdiff
path: root/system/ciopfs
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2020-04-13 22:38:37 -0400
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2020-04-19 10:52:24 +0700
commit2e438af4f87dda8adf1a7beb8bdf5b629a2bb743 (patch)
treeaf352cc226422a623711ff94229742107481d6bc /system/ciopfs
parent9b3bef68884983433093944a90b38ab0b48bcbb6 (diff)
system/ciopfs: New maintainer.
Signed-off-by: B. Watson <yalhcru@gmail.com> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'system/ciopfs')
-rw-r--r--system/ciopfs/README10
-rw-r--r--system/ciopfs/ciopfs.SlackBuild37
-rw-r--r--system/ciopfs/ciopfs.info4
-rw-r--r--system/ciopfs/ciopfs.txt138
-rw-r--r--system/ciopfs/slack-desc2
5 files changed, 167 insertions, 24 deletions
diff --git a/system/ciopfs/README b/system/ciopfs/README
index 8288557370a7d..2c70999a57a77 100644
--- a/system/ciopfs/README
+++ b/system/ciopfs/README
@@ -1,3 +1,7 @@
-ciopfs is a case-insensitive FUSE filesystem. It is useful for getting
-around issues where, say, a game is ported from Linux to Windows but
-the mods for that game still expect a case-insenitive filesystem.
+ciopfs (case insensitive on purpose filesystem)
+
+ciopfs is a stackable or overlay linux userspace file system (implemented
+with FUSE) which mounts a normal directory on a regular file sytem in
+case insensitive fashion. It's useful for getting around issues where,
+say, a game is ported from Linux to Windows but the mods for that game
+still expect a case-insenitive filesystem.
diff --git a/system/ciopfs/ciopfs.SlackBuild b/system/ciopfs/ciopfs.SlackBuild
index 27b116836c4fa..6658402742601 100644
--- a/system/ciopfs/ciopfs.SlackBuild
+++ b/system/ciopfs/ciopfs.SlackBuild
@@ -3,6 +3,7 @@
# Slackware build script for ciopfs
# Copyright 2015 Dugan Chen Canada
+# Copyright 2020 B. Watson
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,6 +23,11 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20200413 bkw:
+# - take over maintenance
+# - i486 => i586
+# - include "links -dump" of web page as ciopfs.txt
+
PRGNAM=ciopfs
VERSION=${VERSION:-0.4}
BUILD=${BUILD:-1}
@@ -29,7 +35,7 @@ TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -40,8 +46,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -63,28 +69,23 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-make
-install -Dm755 ciopfs $PKG/bin/ciopfs
-mkdir -p $PKG/sbin
-( cd $PKG/sbin
-ln -s ../bin/ciopfs mount.ciopfs
-)
+ make
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+install -s -Dm755 ciopfs $PKG/bin/ciopfs
+mkdir -p $PKG/sbin
+ln -s ../bin/ciopfs $PKG/sbin/mount.ciopfs
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+# 20200413 bkw: Upstream includes no documentation. Text file made from
+# upstream's web site.
+cat $CWD/$PRGNAM.txt > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.txt
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/system/ciopfs/ciopfs.info b/system/ciopfs/ciopfs.info
index 1b7880ed43c4b..64b2a2ee75ea6 100644
--- a/system/ciopfs/ciopfs.info
+++ b/system/ciopfs/ciopfs.info
@@ -6,5 +6,5 @@ MD5SUM="1798fc043034f292efd887c05fc4ea1e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Dugan Chen"
-EMAIL="thedoogster [at] gmail [dot] com"
+MAINTAINER="B. Watson"
+EMAIL="yalhcru@gmail.com"
diff --git a/system/ciopfs/ciopfs.txt b/system/ciopfs/ciopfs.txt
new file mode 100644
index 0000000000000..2d5981faa0b57
--- /dev/null
+++ b/system/ciopfs/ciopfs.txt
@@ -0,0 +1,138 @@
+ ciopfs - case insensitive on purpose filesystem
+
+ciopfs is a stackable or overlay linux userspace file system (implemented with
+FUSE) which mounts a normal directory on a regular file system in case
+insensitive fashion.
+
+The commands below should illustrate it’s function:
+
+mkdir -p ~/tmp/ciopfs/{.data,case-insensitive}
+ciopfs ~/tmp/ciopfs/.data ~/tmp/ciopfs/case-insensitive
+cd ~/tmp/ciopfs
+mkdir -p case-insensitive/DeMo/SubFolder
+echo demo >> case-insensitive/DEMO/subFolder/MyFile
+
+At this point your file system should look like this:
+
+case-insensitive
+`-- DeMo
+ `-- SubFolder
+ `-- MyFile
+.data
+`-- demo
+ `-- subfolder
+ `-- myfile
+
+To avoid any conflicts you should not manipulate the data directory directly,
+any change should be done over the mount point. All filenames in the data
+directory which aren’t all lower case are ignored.
+
+If you want to mount the file system automatically at boot time add a line like
+the one below to your /etc/fstab.
+
+/ciopfs/data /ciopfs/mnt ciopfs allow_other,default_permissions,use_ino,attr_timeout=0 0 0
+
+Note that ciopfs is primarily designed for single user mode. It was originally
+developed to mount the wine program folder and provide faster case insensitive
+file access. If you want to give multiple users write access to the same file
+system, then you have to mount it as root. However, in order to avoid security
+problems ciopfs will force fuse into single threaded mode and thus hurt
+performance.
+
+News
+
+ * ciopfs-0.4 released (18.06.2011)
+ * Bugfix in symlink creation
+ * Better errno handling
+ * ciopfs-0.3 released (25.09.2010)
+ * Security improvements: ciopfs forces single threaded mode if the file
+ system is mounted by root and accessible for others
+ * ASCII mode should now work (an off by one error which caused a segfault
+ was fixed)
+ * Various bug fixes
+ * ciopfs-0.2 released (30.06.2008)
+ * Unicode support based on glib
+ * Better error handling in out of memory situations
+ * Various code cleanups
+ * ciopfs-0.1 released (24.05.2008)
+
+How it works
+
+ciopfs works by translating every path element to lower case before further
+operations take place. On file or directory creation the original file name is
+stored in an extended attribute which is later returned upon request.
+
+This is illustrated below:
+
+getfattr -dR .data
+# file: .data/demo
+user.filename="DeMo"
+
+# file: .data/demo/subfolder
+user.filename="SubFolder"
+
+# file: .data/demo/subfolder/myfile
+user.filename="MyFile"
+
+Runtime Requirements
+
+If you want the file system to preserve case information you have to make sure
+that the underlying file system supports extended attributes (for example for
+ext{2,3} you need a kernel with CONFIG_EXT{2,3}_FS_XATTR enabled). You probably
+also want to mount the underlying filesystem with the user_xattr option which
+allows non root users to create extended attributes.
+
+Build Requirements
+
+In order to compile ciopfs you will need the fuse development files, libattr and
+if you plan to use Unicode characters within file names you will either need
+glib which is the default or alternatively libicu.
+
+If you want to use neither of those the file system will fall back to libc’s
+tolower(3) function which is only defined for [a-zA-Z]. Hence, it will only work
+case insensitively for ASCII file names.
+
+For ease of use the following 3 Makefile targets are supported:
+
+ * unicode-glib (default)
+ * unicode-icu
+ * ascii
+
+Running one of those followed by sudo make install should do everything that is
+needed.
+
+Alternatively, you can also use one of the distribution provided binary
+packages.
+
+POSIX Compliance
+
+ciopfs passes all test of a slightly patched POSIX file system test suite when
+mounted as root user with the following options:
+
+allow_other,use_ino,attr_timeout=0,entry_timeout=0
+
+and $fs set to "ciopfs" in the test suite configuration file. This was last
+tested with pjd-fstest-20090130-RC.tgz and ext3 as the underlying file system.
+
+Stability and Speed
+
+ciopfs just passes every requested operation to the underlying file system, so
+in theory it shouldn’t have a negative impact on stability. However, if you find
+a bug then send me an email with the instruction to reproduce it.
+
+As far as speed is of concern, I didn’t really benchmark or optimize it so far.
+There is the usual overhead associated with user / kernel space context
+switches. Furthermore, ciopfs in it’s current implementation uses libc’s
+malloc/free quite extensively, maybe this could be a bottleneck.
+
+Development
+
+You can always fetch the current code base from the git repository located at
+Github or Sourcehut.
+
+If you have comments, suggestions, ideas, a bug report, a patch or something
+else related to ciopfs then don’t hesitate to write me an email.
+
+License
+
+ciopfs is licensed under the GNU GPL v2.
diff --git a/system/ciopfs/slack-desc b/system/ciopfs/slack-desc
index 71fd50e058ba1..dc82790fcda78 100644
--- a/system/ciopfs/slack-desc
+++ b/system/ciopfs/slack-desc
@@ -6,7 +6,7 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-ciopfs: ciopfs (case insensitive FUSE filesystem)
+ciopfs: ciopfs (case insensitive on purpose filesystem)
ciopfs:
ciopfs: ciopfs is a stackable or overlay linux userspace file system
ciopfs: (implemented with fuse) which mounts a normal directory on a regular