commit: efed52c9078a89265fa5d7710fa53bd589be66be
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 16 21:00:26 2025 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Nov 16 21:00:26 2025 +0000
URL: https://gitweb.gentoo.org/proj/steve.git/commit/?id=efed52c9
Start rewriting in C++
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
meson.build | 4 ++--
steve.c => steve.cxx | 48 ++++++++++++++++++++++++------------------------
2 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/meson.build b/meson.build
index cf63031..d5b4328 100644
--- a/meson.build
+++ b/meson.build
@@ -1,7 +1,7 @@
-project('steve', 'c')
+project('steve', 'cpp')
fuse3 = dependency('fuse3')
libbsd = dependency('libbsd')
-executable('steve', ['steve.c'],
+executable('steve', ['steve.cxx'],
dependencies: [fuse3, libbsd])
diff --git a/steve.c b/steve.cxx
similarity index 85%
rename from steve.c
rename to steve.cxx
index dd72df4..efbd0ea 100644
--- a/steve.c
+++ b/steve.cxx
@@ -9,17 +9,17 @@
#define FUSE_USE_VERSION 31
+#include <cstddef>
+#include <cstdio>
+#include <cstdlib>
+#include <cerrno>
+
+#include <sys/queue.h>
+#include <unistd.h>
+
#include <cuse_lowlevel.h>
#include <fuse.h>
#include <fuse_opt.h>
-#include <stdbool.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/queue.h>
-#include <unistd.h>
-#include <errno.h>
static const char *usage =
"usage: steve [options]\n"
@@ -45,7 +45,7 @@ struct steve_state {
bool verbose;
unsigned int jobs;
unsigned int tokens;
- struct steve_read_waiters_head read_waiters;
+ steve_read_waiters_head read_waiters;
};
enum steve_arg_keys {
@@ -53,7 +53,7 @@ enum steve_arg_keys {
STEVE_VERBOSE,
};
-#define STEVE_OPT(t, p) { t, offsetof(struct steve_state, p), 1 }
+#define STEVE_OPT(t, p) { t, offsetof(steve_state, p), 1 }
static const struct fuse_opt steve_opts[] = {
STEVE_OPT("-j %u", jobs),
@@ -68,7 +68,7 @@ static const struct fuse_opt steve_opts[] = {
static int steve_process_arg(
void *userdata, const char *arg, int key, struct fuse_args *outargs)
{
- struct steve_state *state = userdata;
+ steve_state *state = static_cast<steve_state *>(userdata);
(void) outargs;
(void) arg;
@@ -89,7 +89,7 @@ static int steve_process_arg(
static void steve_init(void *userdata, struct fuse_conn_info *conn)
{
- struct steve_state *state = userdata;
+ steve_state *state = static_cast<steve_state *>(userdata);
/* Disable the receiving and processing of FUSE_INTERRUPT requests */
conn->no_interrupt = 1;
@@ -102,12 +102,12 @@ static void steve_init(void *userdata, struct
fuse_conn_info *conn)
static void steve_destroy(void *userdata)
{
- struct steve_state *state = userdata;
+ steve_state *state = static_cast<steve_state *>(userdata);
while (!STAILQ_EMPTY(&state->read_waiters)) {
- struct steve_read_waiter *read_waiter =
STAILQ_FIRST(&state->read_waiters);
+ steve_read_waiter *read_waiter =
STAILQ_FIRST(&state->read_waiters);
STAILQ_REMOVE_HEAD(&state->read_waiters, waiters);
- free(read_waiter);
+ delete read_waiter;
}
STAILQ_INIT(&state->read_waiters);
}
@@ -119,8 +119,8 @@ static void steve_open(fuse_req_t req, struct
fuse_file_info *fi)
static void steve_interrupt(fuse_req_t req, void *userdata)
{
- struct steve_state *state = userdata;
- struct steve_read_waiter *it, *read_waiter;
+ steve_state *state = static_cast<steve_state *>(userdata);
+ steve_read_waiter *it, *read_waiter;
fuse_reply_err(req, EINTR);
STAILQ_FOREACH(it, &state->read_waiters, waiters) {
@@ -141,8 +141,8 @@ static void steve_read(
fuse_req_t req, size_t size, off_t off, struct fuse_file_info *fi)
{
const struct fuse_ctx *context = fuse_req_ctx(req);
- struct steve_state *state = fuse_req_userdata(req);
- struct steve_read_waiter *read_waiter;
+ steve_state *state = static_cast<steve_state *>(fuse_req_userdata(req));
+ steve_read_waiter *read_waiter;
if (off != 0) {
fuse_reply_err(req, EIO);
@@ -168,7 +168,7 @@ static void steve_read(
return;
}
- read_waiter = malloc(sizeof(struct steve_read_waiter));
+ read_waiter = new steve_read_waiter();
if (!read_waiter) {
fuse_reply_err(req, ENOMEM);
return;
@@ -182,10 +182,10 @@ static void steve_read(
fuse_req_interrupt_func(req, steve_interrupt, state);
}
-static void steve_wake_waiters(struct steve_state *state)
+static void steve_wake_waiters(steve_state *state)
{
while (state->tokens > 0 && !STAILQ_EMPTY(&state->read_waiters)) {
- struct steve_read_waiter *read_waiter = STAILQ_FIRST(
+ steve_read_waiter *read_waiter = STAILQ_FIRST(
&state->read_waiters);
state->tokens--;
@@ -202,7 +202,7 @@ static void steve_write(
struct fuse_file_info *fi)
{
const struct fuse_ctx *context = fuse_req_ctx(req);
- struct steve_state *state = fuse_req_userdata(req);
+ steve_state *state = static_cast<steve_state *>(fuse_req_userdata(req));
if (off != 0) {
fuse_reply_err(req, EIO);
@@ -233,7 +233,7 @@ int main(int argc, char **argv)
const char *dev_name = "DEVNAME=steve";
const char *dev_info_argv[] = { dev_name };
struct cuse_info ci = { 0 };
- struct steve_state state = { 0 };
+ steve_state state = { 0 };
int ret;
if (fuse_opt_parse(&args, &state, steve_opts, steve_process_arg)) {