aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md38
-rw-r--r--fs/Makefile29
2 files changed, 23 insertions, 44 deletions
diff --git a/README.md b/README.md
index 77d99b1..1a90a2f 100644
--- a/README.md
+++ b/README.md
@@ -5,31 +5,25 @@
You need to both install the Chrome extension and run the native
filesystem.
-### Install the Chrome extension
-
-Go to the [Chrome extensions page](chrome://extensions).
-
-Enable Developer mode. Load-unpacked the `extension/` folder in this repo.
-
### Run the C filesystem
-First, make sure you `git submodule update --init` to get the `mmx`
-and `cJSON` dependencies. And make sure you have FUSE.
+First, make sure you `git submodule update --init` to get the
+`fs/cJSON` and `fs/base64` dependencies.
+
+And make sure you have FUSE. On Linux, for example, `sudo apt install
+libfuse-dev`. On macOS, get FUSE for macOS.
```
$ cd fs
$ mkdir mnt
-$ make [unmount] mount
+$ make
```
-### Connect the browser extension to the filesystem
+### Install the Chrome extension
-Once the filesystem is running and awaiting a WebSocket connection,
-you need to tell the browser extension to connect to it.
+Go to the [Chrome extensions page](chrome://extensions).
-Click the 'T' icon the extension put in your browser toolbar. The icon
-badge should change from red to blue, and the filesystem program
-should print that it's connected in the terminal.
+Enable Developer mode. Load-unpacked the `extension/` folder in this repo.
Now your browser tabs should be mounted in `fs/mnt`!
@@ -37,9 +31,7 @@ Now your browser tabs should be mounted in `fs/mnt`!
- `extension/`: Browser extension, written in JS
- `fs/`: Native FUSE filesystem, written in C
- - `tabfs.c`: Main thread. Talks to FUSE, implements fs operations.
- - `ws.c`: Side thread. Runs WebSocket server. Talks to browser.
- - `common.c`: Communications interface between tabfs and ws.
+ - `tabfs.c`: Talks to FUSE, implements fs operations, talks to browser.
When you, say, `cat` a file in the tab filesystem:
@@ -51,18 +43,14 @@ When you, say, `cat` a file in the tab filesystem:
userspace filesystem in `fs/tabfs.c`,
4. then `tabfs_read` rephrases the request as a JSON string and
- forwards it using `common_send_tabfs_to_ws` to `fs/ws.c`,
-
-5. and `fs/ws.c` forwards it to our browser extension over WebSocket
- connection;
+ forwards it to the browser extension over 'native messaging',
6. our browser extension in `extension/background.js` handles the
incoming message and calls the browser APIs to construct the data
for that synthetic file;
-7. then the data gets sent back in a JSON message to `ws.c` and then
- back to `tabfs.c` and finally back to FUSE and the kernel and
- `cat`.
+7. then the data gets sent back in a JSON native message to `tabfs.c`
+ and and finally back to FUSE and the kernel and `cat`.
(very little actual work happened here, tbh. it's all just
marshalling)
diff --git a/fs/Makefile b/fs/Makefile
index f393c20..e3b6477 100644
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -4,24 +4,21 @@ TARGETS = tabfs
OSXFUSE_ROOT = /usr/local
#OSXFUSE_ROOT = /opt/local
-INCLUDE_DIR = $(OSXFUSE_ROOT)/include/osxfuse/fuse
-LIBRARY_DIR = $(OSXFUSE_ROOT)/lib
+CFLAGS_EXTRA = -DFUSE_USE_VERSION=26 -D_FILE_OFFSET_BITS=64 -Wall -Wno-unused-function -g
-CC ?= gcc
-
-CFLAGS_OSXFUSE = -I$(INCLUDE_DIR) -L$(LIBRARY_DIR)
-CFLAGS_OSXFUSE += -DFUSE_USE_VERSION=26
-CFLAGS_OSXFUSE += -D_FILE_OFFSET_BITS=64
-CFLAGS_OSXFUSE += -D_DARWIN_USE_64_BIT_INODE
-
-CFLAGS_EXTRA = -Wall -Wno-unused-function -g $(CFLAGS)
-
-LIBS = -losxfuse
+ifeq ($(shell uname -s),Linux)
+ CFLAGS = $(CFLAGS_EXTRA)
+ LIBS = -lfuse
+endif
+ifeq ($(shell uname -s),Darwin)
+ CFLAGS = -I$(OSXFUSE_ROOT)/include/osxfuse/fuse -L$(OSXFUSE_ROOT)/lib -D_DARWIN_USE_64_BIT_INODE $(CFLAGS_EXTRA)
+ LIBS = -losxfuse
+endif
all: $(TARGETS)
tabfs: tabfs.c
- $(CC) $(CFLAGS_OSXFUSE) $(CFLAGS_EXTRA) -o $@ $^ $(LIBS)
+ cc $(CFLAGS) -o $@ $^ $(LIBS)
clean:
rm -f $(TARGETS) *.o
@@ -30,9 +27,3 @@ clean:
unmount:
killall -9 tabfs || true
diskutil unmount force mnt || true
-
-mount: tabfs
- ./tabfs -odirect_io -s -f mnt
-
-debugmount: tabfs
- lldb -- ./tabfs -odirect_io -s -f mnt