Added proper license headers

This commit is contained in:
BritishTeapot 2025-03-10 18:09:05 +01:00
parent 64289b2786
commit d7c20a5d5f
7 changed files with 86 additions and 66 deletions

View File

@ -1,28 +1,15 @@
/*
FUSE: Filesystem in Userspace
Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
Copyright (C) 2011 Sebastian Pipping <sebastian@pipping.org>
This program can be distributed under the terms of the GNU GPLv2.
See the file COPYING.
*/
ICFS: Interactively Controlled File System
Copyright (C) 2024-2025 Fedir Kovalov
/** @file
*
* This file system mirrors the existing file system hierarchy of the
* system, starting at the root file system. This is implemented by
* just "passing through" all requests to the corresponding user-space
* libc functions. This implementation is a little more sophisticated
* than the one in passthrough.c, so performance is not quite as bad.
*
* Compile with:
*
* gcc -Wall passthrough_fh.c `pkg-config fuse3 --cflags --libs` -lulockmgr
* -o passthrough_fh
*
* ## Source code ##
* \include passthrough_fh.c
*/
This program can be distributed under the terms of the GNU GPLv2.
See the file LICENSE.
*/
#define FUSE_USE_VERSION 31
@ -52,6 +39,28 @@
#include "sourcefs.h"
#include "ui-socket.h"
// TODO: move this to other file
const char *get_process_name_by_pid(const int pid) {
char *name = (char *)calloc(1024, sizeof(char));
if (name) {
sprintf(name, "/proc/%d/cmdline", pid);
FILE *f = fopen(name, "r");
if (f) {
size_t size;
size = fread(name, sizeof(char), 1024, f);
if (size > 0) {
if ('\n' == name[size - 1])
name[size - 1] = '\0';
}
fclose(f);
}
}
return name;
}
// TODO: move this somewhere else
const char *real_filename(const char *filename) { return filename; }
static void *xmp_init(struct fuse_conn_info *conn, struct fuse_config *cfg) {
(void)conn;
cfg->use_ino = 1;
@ -245,6 +254,21 @@ static int xmp_mkdir(const char *path, mode_t mode) {
static int xmp_unlink(const char *path) {
int res;
struct process_info pi;
struct fuse_context *fc = fuse_get_context();
// ask the user for the permission for deleting the file
pi.PID = fc->pid;
pi.UID = fc->uid;
pi.name = get_process_name_by_pid(pi.PID);
// fprintf(stderr, "%s, %d\n", path, ask_access(path, pi));
if (ask_access(real_filename(path), pi)) {
free(pi.name);
return -EACCES;
}
free(pi.name);
res = source_unlink(path);
if (res == -1)
@ -356,34 +380,10 @@ static int xmp_utimens(const char *path, const struct timespec ts[2],
}
#endif
// TODO: move this to other file
const char *get_process_name_by_pid(const int pid) {
char *name = (char *)calloc(1024, sizeof(char));
if (name) {
sprintf(name, "/proc/%d/cmdline", pid);
FILE *f = fopen(name, "r");
if (f) {
size_t size;
size = fread(name, sizeof(char), 1024, f);
if (size > 0) {
if ('\n' == name[size - 1])
name[size - 1] = '\0';
}
fclose(f);
}
}
return name;
}
// TODO: move this somewhere else
const char *real_filename(const char *filename) { return filename; }
static int xmp_create(const char *path, mode_t mode,
struct fuse_file_info *fi) {
int fd;
struct process_info pi;
struct fuse_context *fc = fuse_get_context();
pi.PID = fc->pid;
@ -409,9 +409,7 @@ static int xmp_create(const char *path, mode_t mode,
static int xmp_open(const char *path, struct fuse_file_info *fi) {
int fd;
struct process_info pi;
struct fuse_context *fc = fuse_get_context();
pi.PID = fc->pid;

View File

@ -1,3 +1,11 @@
/*
ICFS: Interactively Controlled File System
Copyright (C) 2024-2025 Fedir Kovalov
This program can be distributed under the terms of the GNU GPLv2.
See the file LICENSE.
*/
#ifndef FUSE_OPERATIONS
#define FUSE_OPERATIONS

View File

@ -3,26 +3,12 @@
Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
Copyright (C) 2011 Sebastian Pipping <sebastian@pipping.org>
This program can be distributed under the terms of the GNU GPLv2.
See the file COPYING.
*/
ICFS: Interactively Controlled File System
Copyright (C) 2024-2025 Fedir Kovalov
/** @file
*
* This file system mirrors the existing file system hierarchy of the
* system, starting at the root file system. This is implemented by
* just "passing through" all requests to the corresponding user-space
* libc functions. This implementation is a little more sophisticated
* than the one in passthrough.c, so performance is not quite as bad.
*
* Compile with:
*
* gcc -Wall passthrough_fh.c `pkg-config fuse3 --cflags --libs` -lulockmgr
* -o passthrough_fh
*
* ## Source code ##
* \include passthrough_fh.c
*/
This program can be distributed under the terms of the GNU GPLv2.
See the file LICENSE.
*/
#define FUSE_USE_VERSION 31
@ -42,8 +28,6 @@ const char *mountpoint = NULL;
int main(int argc, char *argv[]) {
umask(0);
// FUSE won't tell us the mountpoint on it's own, so we need to extract it
// ourselves.
mountpoint = realpath(argv[argc - 1], NULL);
int ret = source_init(mountpoint);
@ -59,6 +43,7 @@ int main(int argc, char *argv[]) {
}
ret = fuse_main(argc, argv, get_fuse_operations(), NULL);
free(mountpoint);
return ret;
}

View File

@ -1,3 +1,11 @@
/*
ICFS: Interactively Controlled File System
Copyright (C) 2024-2025 Fedir Kovalov
This program can be distributed under the terms of the GNU GPLv2.
See the file LICENSE.
*/
#define _GNU_SOURCE
#include "sourcefs.h"

View File

@ -1,4 +1,10 @@
/*
ICFS: Interactively Controlled File System
Copyright (C) 2024-2025 Fedir Kovalov
This program can be distributed under the terms of the GNU GPLv2.
See the file LICENSE.
*/
#ifndef SOURCEFS_H
#define SOURCEFS_H

View File

@ -1,3 +1,11 @@
/*
ICFS: Interactively Controlled File System
Copyright (C) 2024-2025 Fedir Kovalov
This program can be distributed under the terms of the GNU GPLv2.
See the file LICENSE.
*/
#include <stddef.h>
#include <sys/types.h>
#define _GNU_SOURCE

View File

@ -1,3 +1,10 @@
/*
ICFS: Interactively Controlled File System
Copyright (C) 2024-2025 Fedir Kovalov
This program can be distributed under the terms of the GNU GPLv2.
See the file LICENSE.
*/
/*
* Interface for controlling communication with the UI.