/core/sdk-objc/ProjectTemplates/C Command Line File System/TemplateFS.c

http://macfuse.googlecode.com/ · C · 217 lines · 171 code · 34 blank · 12 comment · 4 complexity · 49f1df6df33ab8897d950930b1400964 MD5 · raw file

  1. /*
  2. * ÇPROJECTNAMEASIDENTIFIERÈ.c
  3. * ÇPROJECTNAMEÈ
  4. *
  5. * Created by ÇFULLUSERNAMEÈ on ÇDATEÈ.
  6. * Copyright ÇYEARÈ ÇORGANIZATIONNAMEÈ. All rights reserved.
  7. *
  8. */
  9. #include <fuse.h>
  10. #include <string.h>
  11. #include <errno.h>
  12. #include <sys/stat.h>
  13. static int
  14. ÇPROJECTNAMEASIDENTIFIERÈ_fgetattr(const char *path, struct stat *stbuf,
  15. struct fuse_file_info *fi) {
  16. memset(stbuf, 0, sizeof(struct stat));
  17. if (strcmp(path, "/") == 0) { /* The root directory of our file system. */
  18. stbuf->st_mode = S_IFDIR | 0755;
  19. stbuf->st_nlink = 3;
  20. return 0;
  21. }
  22. return -ENOENT;
  23. }
  24. static int
  25. ÇPROJECTNAMEASIDENTIFIERÈ_getattr(const char *path, struct stat *stbuf) {
  26. return ÇPROJECTNAMEASIDENTIFIERÈ_fgetattr(path, stbuf, NULL);
  27. }
  28. static int
  29. ÇPROJECTNAMEASIDENTIFIERÈ_readlink(const char *path, char *buf, size_t size) {
  30. return -ENOENT;
  31. }
  32. static int
  33. ÇPROJECTNAMEASIDENTIFIERÈ_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
  34. off_t offset, struct fuse_file_info *fi) {
  35. if (strcmp(path, "/") != 0) /* We only recognize the root directory. */
  36. return -ENOENT;
  37. filler(buf, ".", NULL, 0); /* Current directory (.) */
  38. filler(buf, "..", NULL, 0); /* Parent directory (..) */
  39. return 0;
  40. }
  41. static int
  42. ÇPROJECTNAMEASIDENTIFIERÈ_mknod(const char *path, mode_t mode, dev_t rdev) {
  43. return -ENOSYS;
  44. }
  45. static int
  46. ÇPROJECTNAMEASIDENTIFIERÈ_mkdir(const char *path, mode_t mode) {
  47. return -ENOSYS;
  48. }
  49. static int
  50. ÇPROJECTNAMEASIDENTIFIERÈ_unlink(const char *path) {
  51. return -ENOSYS;
  52. }
  53. static int
  54. ÇPROJECTNAMEASIDENTIFIERÈ_rmdir(const char *path) {
  55. return -ENOSYS;
  56. }
  57. static int
  58. ÇPROJECTNAMEASIDENTIFIERÈ_symlink(const char *from, const char *to) {
  59. return -ENOSYS;
  60. }
  61. static int
  62. ÇPROJECTNAMEASIDENTIFIERÈ_rename(const char *from, const char *to) {
  63. return -ENOSYS;
  64. }
  65. static int
  66. ÇPROJECTNAMEASIDENTIFIERÈ_exchange(const char *path1, const char *path2, unsigned long options) {
  67. return -ENOSYS;
  68. }
  69. static int
  70. ÇPROJECTNAMEASIDENTIFIERÈ_link(const char *from, const char *to) {
  71. return -ENOSYS;
  72. }
  73. static int
  74. ÇPROJECTNAMEASIDENTIFIERÈ_fsetattr_x(const char *path, struct setattr_x *attr,
  75. struct fuse_file_info *fi) {
  76. return -ENOENT;
  77. }
  78. static int
  79. ÇPROJECTNAMEASIDENTIFIERÈ_setattr_x(const char *path, struct setattr_x *attr) {
  80. return -ENOENT;
  81. }
  82. static int
  83. ÇPROJECTNAMEASIDENTIFIERÈ_getxtimes(const char *path, struct timespec *bkuptime,
  84. struct timespec *crtime) {
  85. return -ENOENT;
  86. }
  87. static int
  88. ÇPROJECTNAMEASIDENTIFIERÈ_create(const char *path, mode_t mode, struct fuse_file_info *fi) {
  89. return -ENOSYS;
  90. }
  91. static int
  92. ÇPROJECTNAMEASIDENTIFIERÈ_open(const char *path, struct fuse_file_info *fi) {
  93. return -ENOENT;
  94. }
  95. static int
  96. ÇPROJECTNAMEASIDENTIFIERÈ_read(const char *path, char *buf, size_t size, off_t offset,
  97. struct fuse_file_info *fi) {
  98. return -ENOSYS;
  99. }
  100. static int
  101. ÇPROJECTNAMEASIDENTIFIERÈ_write(const char *path, const char *buf, size_t size,
  102. off_t offset, struct fuse_file_info *fi) {
  103. return -ENOSYS;
  104. }
  105. static int
  106. ÇPROJECTNAMEASIDENTIFIERÈ_statfs(const char *path, struct statvfs *stbuf) {
  107. memset(stbuf, 0, sizeof(*stbuf));
  108. stbuf->f_files = 2; /* For . and .. in the root */
  109. return 0;
  110. }
  111. static int
  112. ÇPROJECTNAMEASIDENTIFIERÈ_flush(const char *path, struct fuse_file_info *fi) {
  113. return 0;
  114. }
  115. static int
  116. ÇPROJECTNAMEASIDENTIFIERÈ_release(const char *path, struct fuse_file_info *fi) {
  117. return 0;
  118. }
  119. static int
  120. ÇPROJECTNAMEASIDENTIFIERÈ_fsync(const char *path, int isdatasync, struct fuse_file_info *fi) {
  121. return 0;
  122. }
  123. static int
  124. ÇPROJECTNAMEASIDENTIFIERÈ_setxattr(const char *path, const char *name, const char *value,
  125. size_t size, int flags, uint32_t position) {
  126. return -ENOTSUP;
  127. }
  128. static int
  129. ÇPROJECTNAMEASIDENTIFIERÈ_getxattr(const char *path, const char *name, char *value, size_t size,
  130. uint32_t position) {
  131. return -ENOATTR;
  132. }
  133. static int
  134. ÇPROJECTNAMEASIDENTIFIERÈ_listxattr(const char *path, char *list, size_t size) {
  135. return 0;
  136. }
  137. static int
  138. ÇPROJECTNAMEASIDENTIFIERÈ_removexattr(const char *path, const char *name) {
  139. return -ENOATTR;
  140. }
  141. void *
  142. ÇPROJECTNAMEASIDENTIFIERÈ_init(struct fuse_conn_info *conn) {
  143. FUSE_ENABLE_XTIMES(conn);
  144. return NULL;
  145. }
  146. void
  147. ÇPROJECTNAMEASIDENTIFIERÈ_destroy(void *userdata) {
  148. /* nothing */
  149. }
  150. struct fuse_operations ÇPROJECTNAMEASIDENTIFIERÈ_operations = {
  151. .init = ÇPROJECTNAMEASIDENTIFIERÈ_init,
  152. .destroy = ÇPROJECTNAMEASIDENTIFIERÈ_destroy,
  153. .getattr = ÇPROJECTNAMEASIDENTIFIERÈ_getattr,
  154. .fgetattr = ÇPROJECTNAMEASIDENTIFIERÈ_fgetattr,
  155. /* .access = ÇPROJECTNAMEASIDENTIFIERÈ_access, */
  156. .readlink = ÇPROJECTNAMEASIDENTIFIERÈ_readlink,
  157. /* .opendir = ÇPROJECTNAMEASIDENTIFIERÈ_opendir, */
  158. .readdir = ÇPROJECTNAMEASIDENTIFIERÈ_readdir,
  159. /* .releasedir = ÇPROJECTNAMEASIDENTIFIERÈ_releasedir, */
  160. .mknod = ÇPROJECTNAMEASIDENTIFIERÈ_mknod,
  161. .mkdir = ÇPROJECTNAMEASIDENTIFIERÈ_mkdir,
  162. .symlink = ÇPROJECTNAMEASIDENTIFIERÈ_symlink,
  163. .unlink = ÇPROJECTNAMEASIDENTIFIERÈ_unlink,
  164. .rmdir = ÇPROJECTNAMEASIDENTIFIERÈ_rmdir,
  165. .rename = ÇPROJECTNAMEASIDENTIFIERÈ_rename,
  166. .link = ÇPROJECTNAMEASIDENTIFIERÈ_link,
  167. .create = ÇPROJECTNAMEASIDENTIFIERÈ_create,
  168. .open = ÇPROJECTNAMEASIDENTIFIERÈ_open,
  169. .read = ÇPROJECTNAMEASIDENTIFIERÈ_read,
  170. .write = ÇPROJECTNAMEASIDENTIFIERÈ_write,
  171. .statfs = ÇPROJECTNAMEASIDENTIFIERÈ_statfs,
  172. .flush = ÇPROJECTNAMEASIDENTIFIERÈ_flush,
  173. .release = ÇPROJECTNAMEASIDENTIFIERÈ_release,
  174. .fsync = ÇPROJECTNAMEASIDENTIFIERÈ_fsync,
  175. .setxattr = ÇPROJECTNAMEASIDENTIFIERÈ_setxattr,
  176. .getxattr = ÇPROJECTNAMEASIDENTIFIERÈ_getxattr,
  177. .listxattr = ÇPROJECTNAMEASIDENTIFIERÈ_listxattr,
  178. .removexattr = ÇPROJECTNAMEASIDENTIFIERÈ_removexattr,
  179. .exchange = ÇPROJECTNAMEASIDENTIFIERÈ_exchange,
  180. .getxtimes = ÇPROJECTNAMEASIDENTIFIERÈ_getxtimes,
  181. .setattr_x = ÇPROJECTNAMEASIDENTIFIERÈ_setattr_x,
  182. .fsetattr_x = ÇPROJECTNAMEASIDENTIFIERÈ_fsetattr_x,
  183. };