"Fossies" - the Fresh Open Source Software Archive

Member "fuse-3.10.4/doc/html/printcap_8c_source.html" (9 Jun 2021, 39495 Bytes) of package /linux/misc/fuse-3.10.4.tar.xz:


Caution: In this restricted "Fossies" environment the current HTML page may not be correctly presentated and may have some non-functional links. You can here alternatively try to browse the pure source code or just view or download the uninterpreted raw source code. If the rendering is insufficient you may try to find and view the page on the project site itself.

libfuse
printcap.c
Go to the documentation of this file.
1 /*
2  FUSE: Filesystem in Userspace
3  Copyright (C) 2017 Nikolaus Rath <Nikolaus@rath.org>
4 
5  This program can be distributed under the terms of the GNU GPLv2.
6  See the file COPYING.
7 */
8 
22 #define FUSE_USE_VERSION 31
23 
24 #include <config.h>
25 
26 #include <fuse_lowlevel.h>
27 #include <stdio.h>
28 #include <unistd.h>
29 #include <string.h>
30 #include <stdlib.h>
31 
32 struct fuse_session *se;
33 
34 static void pc_init(void *userdata,
35  struct fuse_conn_info *conn)
36 {
37  (void) userdata;
38 
39  printf("Protocol version: %d.%d\n", conn->proto_major,
40  conn->proto_minor);
41  printf("Capabilities:\n");
43  printf("\tFUSE_CAP_WRITEBACK_CACHE\n");
44  if(conn->capable & FUSE_CAP_ASYNC_READ)
45  printf("\tFUSE_CAP_ASYNC_READ\n");
46  if(conn->capable & FUSE_CAP_POSIX_LOCKS)
47  printf("\tFUSE_CAP_POSIX_LOCKS\n");
49  printf("\tFUSE_CAP_ATOMIC_O_TRUNC\n");
51  printf("\tFUSE_CAP_EXPORT_SUPPORT\n");
52  if(conn->capable & FUSE_CAP_DONT_MASK)
53  printf("\tFUSE_CAP_DONT_MASK\n");
54  if(conn->capable & FUSE_CAP_SPLICE_MOVE)
55  printf("\tFUSE_CAP_SPLICE_MOVE\n");
56  if(conn->capable & FUSE_CAP_SPLICE_READ)
57  printf("\tFUSE_CAP_SPLICE_READ\n");
58  if(conn->capable & FUSE_CAP_SPLICE_WRITE)
59  printf("\tFUSE_CAP_SPLICE_WRITE\n");
60  if(conn->capable & FUSE_CAP_FLOCK_LOCKS)
61  printf("\tFUSE_CAP_FLOCK_LOCKS\n");
62  if(conn->capable & FUSE_CAP_IOCTL_DIR)
63  printf("\tFUSE_CAP_IOCTL_DIR\n");
65  printf("\tFUSE_CAP_AUTO_INVAL_DATA\n");
66  if(conn->capable & FUSE_CAP_READDIRPLUS)
67  printf("\tFUSE_CAP_READDIRPLUS\n");
69  printf("\tFUSE_CAP_READDIRPLUS_AUTO\n");
70  if(conn->capable & FUSE_CAP_ASYNC_DIO)
71  printf("\tFUSE_CAP_ASYNC_DIO\n");
73  printf("\tFUSE_CAP_WRITEBACK_CACHE\n");
75  printf("\tFUSE_CAP_NO_OPEN_SUPPORT\n");
77  printf("\tFUSE_CAP_PARALLEL_DIROPS\n");
78  if(conn->capable & FUSE_CAP_POSIX_ACL)
79  printf("\tFUSE_CAP_POSIX_ACL\n");
81  printf("\tFUSE_CAP_CACHE_SYMLINKS\n");
83  printf("\tFUSE_CAP_NO_OPENDIR_SUPPORT\n");
85  printf("\tFUSE_CAP_EXPLICIT_INVAL_DATA\n");
87 }
88 
89 
90 static const struct fuse_lowlevel_ops pc_oper = {
91  .init = pc_init,
92 };
93 
94 int main(int argc, char **argv)
95 {
96  struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
97  char *mountpoint;
98  int ret = -1;
99 
100  mountpoint = strdup("/tmp/fuse_printcap_XXXXXX");
101  if(mkdtemp(mountpoint) == NULL) {
102  perror("mkdtemp");
103  return 1;
104  }
105 
106  printf("FUSE library version %s\n", fuse_pkgversion());
108 
109  se = fuse_session_new(&args, &pc_oper,
110  sizeof(pc_oper), NULL);
111  if (se == NULL)
112  goto err_out1;
113 
114  if (fuse_set_signal_handlers(se) != 0)
115  goto err_out2;
116 
117  if (fuse_session_mount(se, mountpoint) != 0)
118  goto err_out3;
119 
120  ret = fuse_session_loop(se);
121 
123 err_out3:
125 err_out2:
127 err_out1:
128  rmdir(mountpoint);
129  free(mountpoint);
130  fuse_opt_free_args(&args);
131 
132  return ret ? 1 : 0;
133 }
void fuse_session_destroy(struct fuse_session *se)
#define FUSE_CAP_IOCTL_DIR
Definition: fuse_common.h:218
struct fuse_session * fuse_session_new(struct fuse_args *args, const struct fuse_lowlevel_ops *op, size_t op_size, void *userdata)
void fuse_session_exit(struct fuse_session *se)
unsigned capable
Definition: fuse_common.h:459
int fuse_session_loop(struct fuse_session *se)
Definition: fuse_loop.c:19
int fuse_session_mount(struct fuse_session *se, const char *mountpoint)
unsigned proto_minor
Definition: fuse_common.h:430
#define FUSE_CAP_ASYNC_READ
Definition: fuse_common.h:141
#define FUSE_CAP_EXPORT_SUPPORT
Definition: fuse_common.h:165
#define FUSE_CAP_CACHE_SYMLINKS
Definition: fuse_common.h:360
#define FUSE_CAP_READDIRPLUS_AUTO
Definition: fuse_common.h:276
int fuse_set_signal_handlers(struct fuse_session *se)
Definition: fuse_signals.c:62
#define FUSE_CAP_SPLICE_WRITE
Definition: fuse_common.h:181
void fuse_remove_signal_handlers(struct fuse_session *se)
Definition: fuse_signals.c:79
#define FUSE_CAP_NO_OPEN_SUPPORT
Definition: fuse_common.h:309
void fuse_lowlevel_version(void)
void fuse_opt_free_args(struct fuse_args *args)
Definition: fuse_opt.c:34
#define FUSE_CAP_SPLICE_MOVE
Definition: fuse_common.h:189
#define FUSE_CAP_NO_OPENDIR_SUPPORT
Definition: fuse_common.h:372
#define FUSE_CAP_AUTO_INVAL_DATA
Definition: fuse_common.h:240
#define FUSE_CAP_SPLICE_READ
Definition: fuse_common.h:198
void fuse_session_unmount(struct fuse_session *se)
#define FUSE_CAP_FLOCK_LOCKS
Definition: fuse_common.h:211
#define FUSE_CAP_EXPLICIT_INVAL_DATA
Definition: fuse_common.h:395
unsigned proto_major
Definition: fuse_common.h:425
#define FUSE_CAP_ASYNC_DIO
Definition: fuse_common.h:287
#define FUSE_CAP_WRITEBACK_CACHE
Definition: fuse_common.h:296
#define FUSE_CAP_POSIX_LOCKS
Definition: fuse_common.h:149
#define FUSE_CAP_POSIX_ACL
Definition: fuse_common.h:338
#define FUSE_CAP_ATOMIC_O_TRUNC
Definition: fuse_common.h:158
#define FUSE_CAP_READDIRPLUS
Definition: fuse_common.h:248
const char * fuse_pkgversion(void)
Definition: fuse.c:5122
#define FUSE_ARGS_INIT(argc, argv)
Definition: fuse_opt.h:123
#define FUSE_CAP_PARALLEL_DIROPS
Definition: fuse_common.h:319
void(* init)(void *userdata, struct fuse_conn_info *conn)
#define FUSE_CAP_DONT_MASK
Definition: fuse_common.h:173