⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 v2fuseutils.c

📁 Support library to access and manipulate FAT12 / FAT16 / FAT32 file systems - Includes a FUSE filesy
💻 C
字号:
/*   This is part of um-ViewOS *   The user-mode implementation of OSVIEW -- A Process with a View * *   v2fuseutils utility functions for fuse *    *   Copyright 2007 Renzo Davoli University of Bologna - Italy *    *   This program is free software; you can redistribute it and/or modify *   it under the terms of the GNU General Public License as published by *   the Free Software Foundation; either version 2 of the License. * *   This program is distributed in the hope that it will be useful, *   but WITHOUT ANY WARRANTY; without even the implied warranty of *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *   GNU General Public License for more details. * *   You should have received a copy of the GNU General Public License along *   with this program; if not, write to the Free Software Foundation, Inc., *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. * */#include <config.h>#include <fuse.h>#include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include "v2fuseutils.h"void v2f_usage(char *progname,struct fuse_operations *ops){	  int argc = 2;		static char *argv[] = {"...", "-h"};		fprintf(stderr,				"Usage: %s imagefile mountpoint [options]\n"				"or at your choice:\n"				"       %s [options] imagefile mountpoint\n", progname,progname);		fprintf(stderr,"valid fuse options follow:\n");#if FUSE_USE_VERSION < 26		fuse_main( argc, argv, ops);#else		fuse_main( argc, argv, ops, NULL);#endif		exit(1);}void v2f_rearrangeargv(int argc, char *argv[]){	  int i,sourcearg,dasho;		  for (i=1,dasho=sourcearg=0;i<argc && sourcearg==0;i++) {				    if (*argv[i] != '-' && !dasho)							      sourcearg=i;						    dasho=(strcmp(argv[i],"-o")==0);								  }			  if (sourcearg > 1 && sourcearg < argc-1) {					    char *sourcepath=argv[sourcearg];							    char *mountpoint=argv[sourcearg+1];									    for (i=sourcearg; i>1; i--)												      argv[i+1]=argv[i-1];											    argv[1]=sourcepath;													    argv[2]=mountpoint;															  }}int v2f_checkrorwplus(int argc, char *argv[]){	int i,result=0;	for (i=0;i<argc;i++)		if (strcmp(argv[i],"-o")==0) {			char *s=argv[i+1];			char *t=s;			int status=0;			while (*s) {				//printf("%c %d\n",*s,status);				switch(status) {					case 0: /* beginning of token */						if (*s=='r')							status=1;						else							status=2;						*(t++)=*(s++);						break;					case 1: /* leading r */						if (*s=='o')							status=3;						else if (*s=='w')							status=4;						else if (*s==',')							status=0;						else							status=2;						*(t++)=*(s++);						break;					case 2: /* no match */						if (*s==',')							status=0;						*(t++)=*(s++);						break;					case 3: /* ro */						if (*s==',') {							result |= FLRO;							status=0;						} else							status = 2;						*(t++)=*(s++);						break;					case 4:						*t=*s;						if (*s=='+') 							status=5;						else if (*s==',') {							result |= FLRW;							*t='o';							status = 0;						} else							status = 2;						t++;s++;						break;					case 5:						if (*s==',') {							result |= FLRWPLUS;							status = 0;							t--;						} else 							status = 2;						*(t++)=*(s++);						break;				}			}			switch (status) {				case 3: result |= FLRO; break;				case 4: result |= FLRW; break;				case 5: result |= FLRWPLUS; t--;break;			}			*t=0;		}	return result;}int v2f_printwarning(int rorwplus) {	if (!rorwplus || (rorwplus & FLRW)) {		fprintf(stderr,"This is experimental code, opening rw a real file system could be\n"				"dangerous for your data. Please add \"-o ro\" if you want to open the file\n"				"system image in read-only mode, or \"-o rw+\" if you accept the risk to test\n"				"this module\n");		return 1;	} else		return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -