summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels De Graef <nielsdegraef@gmail.com>2018-12-23 19:02:43 +0100
committerNiels De Graef <nielsdegraef@gmail.com>2018-12-25 12:46:11 +0100
commite5ff49fb1fbcd363f4080afdbe8d2afdb0d9ad6a (patch)
tree5bfd7e09fea685db8591293c32c3714e02975805
parentd8bdcd1be1ea59329024db04258cada956291bbc (diff)
downloadgdm-e5ff49fb1fbcd363f4080afdbe8d2afdb0d9ad6a.tar.gz
server: use G_DECLARE_FINAL_TYPE
-rw-r--r--daemon/gdm-server.c172
-rw-r--r--daemon/gdm-server.h28
2 files changed, 85 insertions, 115 deletions
diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c
index 83fba99c..aede6c53 100644
--- a/daemon/gdm-server.c
+++ b/daemon/gdm-server.c
@@ -63,12 +63,12 @@
extern char **environ;
-#define GDM_SERVER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_SERVER, GdmServerPrivate))
-
#define MAX_LOGS 5
-struct GdmServerPrivate
+struct _GdmServer
{
+ GObject parent;
+
char *command;
GPid pid;
@@ -127,9 +127,9 @@ gdm_server_ready (GdmServer *server)
g_debug ("GdmServer: Got USR1 from X server - emitting READY");
gdm_run_script (GDMCONFDIR "/Init", GDM_USERNAME,
- server->priv->display_name,
+ server->display_name,
NULL, /* hostname */
- server->priv->auth_file);
+ server->auth_file);
g_signal_emit (server, signals[READY], 0);
}
@@ -150,7 +150,7 @@ got_sigusr1 (gpointer user_data)
for (l = active_servers; l; l = l->next) {
GdmServer *server = l->data;
- if (server->priv->pid == pid)
+ if (server->pid == pid)
gdm_server_ready (server);
}
@@ -207,7 +207,7 @@ gdm_server_init_command (GdmServer *server)
const char *debug_options;
const char *verbosity = "";
- if (server->priv->command != NULL) {
+ if (server->command != NULL) {
return;
}
@@ -247,16 +247,16 @@ gdm_server_init_command (GdmServer *server)
goto fallback;
}
- if (server->priv->display_seat_id == NULL ||
- strcmp (server->priv->display_seat_id, "seat0") == 0) {
+ if (server->display_seat_id == NULL ||
+ strcmp (server->display_seat_id, "seat0") == 0) {
goto fallback;
}
- server->priv->command = g_strdup_printf (SYSTEMD_X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
+ server->command = g_strdup_printf (SYSTEMD_X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
return;
fallback:
- server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
+ server->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
}
@@ -275,7 +275,7 @@ gdm_server_resolve_command_line (GdmServer *server,
gdm_server_init_command (server);
- g_shell_parse_argv (server->priv->command, &argc, &argv, NULL);
+ g_shell_parse_argv (server->command, &argc, &argv, NULL);
for (len = 0; argv != NULL && argv[len] != NULL; len++) {
char *arg = argv[len];
@@ -299,17 +299,17 @@ gdm_server_resolve_command_line (GdmServer *server,
}
/* server number is the FIRST argument, before any others */
- argv[1] = g_strdup (server->priv->display_name);
+ argv[1] = g_strdup (server->display_name);
len++;
- if (server->priv->auth_file != NULL) {
+ if (server->auth_file != NULL) {
argv[len++] = g_strdup ("-auth");
- argv[len++] = g_strdup (server->priv->auth_file);
+ argv[len++] = g_strdup (server->auth_file);
}
- if (server->priv->display_seat_id != NULL) {
+ if (server->display_seat_id != NULL) {
argv[len++] = g_strdup ("-seat");
- argv[len++] = g_strdup (server->priv->display_seat_id);
+ argv[len++] = g_strdup (server->display_seat_id);
}
/* If we were compiled with Xserver >= 1.17 we need to specify
@@ -318,12 +318,12 @@ gdm_server_resolve_command_line (GdmServer *server,
* -nolisten tcp to disable listening on tcp sockets.
*/
#ifdef HAVE_XSERVER_THAT_DEFAULTS_TO_LOCAL_ONLY
- if (!server->priv->disable_tcp && ! query_in_arglist) {
+ if (!server->disable_tcp && ! query_in_arglist) {
argv[len++] = g_strdup ("-listen");
argv[len++] = g_strdup ("tcp");
}
#else
- if (server->priv->disable_tcp && ! query_in_arglist) {
+ if (server->disable_tcp && ! query_in_arglist) {
argv[len++] = g_strdup ("-nolisten");
argv[len++] = g_strdup ("tcp");
}
@@ -374,14 +374,14 @@ change_user (GdmServer *server)
{
struct passwd *pwent;
- if (server->priv->user_name == NULL) {
+ if (server->user_name == NULL) {
return;
}
- gdm_get_pwent_for_name (server->priv->user_name, &pwent);
+ gdm_get_pwent_for_name (server->user_name, &pwent);
if (pwent == NULL) {
g_warning (_("Server was to be spawned by user %s but that user doesn’t exist"),
- server->priv->user_name);
+ server->user_name);
_exit (EXIT_FAILURE);
}
@@ -431,10 +431,10 @@ gdm_server_setup_journal_fds (GdmServer *server)
char *identifier;
gsize size;
- size = strlen (prefix) + strlen (server->priv->display_name) + 1;
+ size = strlen (prefix) + strlen (server->display_name) + 1;
identifier = g_alloca (size);
strcpy (identifier, prefix);
- strcat (identifier, server->priv->display_name);
+ strcat (identifier, server->display_name);
identifier[size - 1] = '\0';
out = sd_journal_stream_fd (identifier, LOG_INFO, FALSE);
@@ -462,8 +462,8 @@ gdm_server_setup_logfile (GdmServer *server)
char *log_file;
char *log_path;
- log_file = g_strdup_printf ("%s.log", server->priv->display_name);
- log_path = g_build_filename (server->priv->log_dir, log_file, NULL);
+ log_file = g_strdup_printf ("%s.log", server->display_name);
+ log_path = g_build_filename (server->log_dir, log_file, NULL);
g_free (log_file);
/* Rotate the X server logs */
@@ -483,7 +483,7 @@ gdm_server_setup_logfile (GdmServer *server)
} else {
g_warning (_("%s: Could not open log file for display %s!"),
"gdm_server_spawn",
- server->priv->display_name);
+ server->display_name);
}
}
@@ -532,11 +532,11 @@ server_child_setup (GdmServer *server)
prctl (PR_SET_PDEATHSIG, SIGTERM);
#endif
- if (server->priv->priority != 0) {
- if (setpriority (PRIO_PROCESS, 0, server->priv->priority)) {
+ if (server->priority != 0) {
+ if (setpriority (PRIO_PROCESS, 0, server->priority)) {
g_warning (_("%s: Server priority couldn’t be set to %d: %s"),
"gdm_server_spawn",
- server->priv->priority,
+ server->priority,
g_strerror (errno));
}
}
@@ -575,12 +575,12 @@ get_server_environment (GdmServer *server)
}
/* modify environment here */
- g_hash_table_insert (hash, g_strdup ("DISPLAY"), g_strdup (server->priv->display_name));
+ g_hash_table_insert (hash, g_strdup ("DISPLAY"), g_strdup (server->display_name));
- if (server->priv->user_name != NULL) {
+ if (server->user_name != NULL) {
struct passwd *pwent;
- gdm_get_pwent_for_name (server->priv->user_name, &pwent);
+ gdm_get_pwent_for_name (server->user_name, &pwent);
if (pwent->pw_dir != NULL
&& g_file_test (pwent->pw_dir, G_FILE_TEST_EXISTS)) {
@@ -612,7 +612,7 @@ server_add_xserver_args (GdmServer *server,
int i;
len = *argc;
- g_shell_parse_argv (server->priv->session_args, &count, &args, NULL);
+ g_shell_parse_argv (server->session_args, &count, &args, NULL);
*argv = g_renew (char *, *argv, len + count + 1);
for (i=0; i < count;i++) {
@@ -649,8 +649,8 @@ server_child_watch (GPid pid,
g_signal_emit (server, signals [DIED], 0, num);
}
- g_spawn_close_pid (server->priv->pid);
- server->priv->pid = -1;
+ g_spawn_close_pid (server->pid);
+ server->pid = -1;
g_object_unref (server);
}
@@ -680,7 +680,7 @@ gdm_server_spawn (GdmServer *server,
&argc,
&argv);
- if (server->priv->session_args) {
+ if (server->session_args) {
server_add_xserver_args (server, &argc, &argv);
}
@@ -688,7 +688,7 @@ gdm_server_spawn (GdmServer *server,
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
_("%s: Empty server command for display %s"),
"gdm_server_spawn",
- server->priv->display_name);
+ server->display_name);
goto out;
}
@@ -713,16 +713,16 @@ gdm_server_spawn (GdmServer *server,
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
(GSpawnChildSetupFunc)server_child_setup,
server,
- &server->priv->pid,
+ &server->pid,
NULL,
NULL,
NULL,
error))
goto out;
- g_debug ("GdmServer: Started X server process %d - waiting for READY", (int)server->priv->pid);
+ g_debug ("GdmServer: Started X server process %d - waiting for READY", (int)server->pid);
- server->priv->child_watch_id = g_child_watch_add (server->priv->pid,
+ server->child_watch_id = g_child_watch_add (server->pid,
(GChildWatchFunc)server_child_watch,
server);
@@ -752,7 +752,7 @@ gdm_server_start (GdmServer *server)
GError **error = &local_error;
/* Hardcode the VT for the initial X server, but nothing else */
- if (server->priv->is_initial) {
+ if (server->is_initial) {
vtarg = "vt" GDM_INITIAL_VT;
}
@@ -775,8 +775,8 @@ server_died (GdmServer *server)
{
int exit_status;
- g_debug ("GdmServer: Waiting on process %d", server->priv->pid);
- exit_status = gdm_wait_on_pid (server->priv->pid);
+ g_debug ("GdmServer: Waiting on process %d", server->pid);
+ exit_status = gdm_wait_on_pid (server->pid);
if (WIFEXITED (exit_status) && (WEXITSTATUS (exit_status) != 0)) {
g_debug ("GdmServer: Wait on child process failed");
@@ -784,12 +784,12 @@ server_died (GdmServer *server)
/* exited normally */
}
- g_spawn_close_pid (server->priv->pid);
- server->priv->pid = -1;
+ g_spawn_close_pid (server->pid);
+ server->pid = -1;
- if (server->priv->display_device != NULL) {
- g_free (server->priv->display_device);
- server->priv->display_device = NULL;
+ if (server->display_device != NULL) {
+ g_free (server->display_device);
+ server->display_device = NULL;
g_object_notify (G_OBJECT (server), "display-device");
}
@@ -801,19 +801,19 @@ gdm_server_stop (GdmServer *server)
{
int res;
- if (server->priv->pid <= 1) {
+ if (server->pid <= 1) {
return TRUE;
}
/* remove watch source before we can wait on child */
- if (server->priv->child_watch_id > 0) {
- g_source_remove (server->priv->child_watch_id);
- server->priv->child_watch_id = 0;
+ if (server->child_watch_id > 0) {
+ g_source_remove (server->child_watch_id);
+ server->child_watch_id = 0;
}
g_debug ("GdmServer: Stopping server");
- res = gdm_signal_pid (server->priv->pid, SIGTERM);
+ res = gdm_signal_pid (server->pid, SIGTERM);
if (res < 0) {
} else {
server_died (server);
@@ -827,46 +827,46 @@ static void
_gdm_server_set_display_name (GdmServer *server,
const char *name)
{
- g_free (server->priv->display_name);
- server->priv->display_name = g_strdup (name);
+ g_free (server->display_name);
+ server->display_name = g_strdup (name);
}
static void
_gdm_server_set_display_seat_id (GdmServer *server,
const char *name)
{
- g_free (server->priv->display_seat_id);
- server->priv->display_seat_id = g_strdup (name);
+ g_free (server->display_seat_id);
+ server->display_seat_id = g_strdup (name);
}
static void
_gdm_server_set_auth_file (GdmServer *server,
const char *auth_file)
{
- g_free (server->priv->auth_file);
- server->priv->auth_file = g_strdup (auth_file);
+ g_free (server->auth_file);
+ server->auth_file = g_strdup (auth_file);
}
static void
_gdm_server_set_user_name (GdmServer *server,
const char *name)
{
- g_free (server->priv->user_name);
- server->priv->user_name = g_strdup (name);
+ g_free (server->user_name);
+ server->user_name = g_strdup (name);
}
static void
_gdm_server_set_disable_tcp (GdmServer *server,
gboolean disabled)
{
- server->priv->disable_tcp = disabled;
+ server->disable_tcp = disabled;
}
static void
_gdm_server_set_is_initial (GdmServer *server,
gboolean initial)
{
- server->priv->is_initial = initial;
+ server->is_initial = initial;
}
static void
@@ -916,26 +916,26 @@ gdm_server_get_property (GObject *object,
switch (prop_id) {
case PROP_DISPLAY_NAME:
- g_value_set_string (value, self->priv->display_name);
+ g_value_set_string (value, self->display_name);
break;
case PROP_DISPLAY_SEAT_ID:
- g_value_set_string (value, self->priv->display_seat_id);
+ g_value_set_string (value, self->display_seat_id);
break;
case PROP_DISPLAY_DEVICE:
g_value_take_string (value,
gdm_server_get_display_device (self));
break;
case PROP_AUTH_FILE:
- g_value_set_string (value, self->priv->auth_file);
+ g_value_set_string (value, self->auth_file);
break;
case PROP_USER_NAME:
- g_value_set_string (value, self->priv->user_name);
+ g_value_set_string (value, self->user_name);
break;
case PROP_DISABLE_TCP:
- g_value_set_boolean (value, self->priv->disable_tcp);
+ g_value_set_boolean (value, self->disable_tcp);
break;
case PROP_IS_INITIAL:
- g_value_set_boolean (value, self->priv->is_initial);
+ g_value_set_boolean (value, self->is_initial);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -952,13 +952,11 @@ gdm_server_class_init (GdmServerClass *klass)
object_class->set_property = gdm_server_set_property;
object_class->finalize = gdm_server_finalize;
- g_type_class_add_private (klass, sizeof (GdmServerPrivate));
-
signals [READY] =
g_signal_new ("ready",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GdmServerClass, ready),
+ 0,
NULL,
NULL,
g_cclosure_marshal_VOID__VOID,
@@ -968,7 +966,7 @@ gdm_server_class_init (GdmServerClass *klass)
g_signal_new ("exited",
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (GdmServerClass, exited),
+ 0,
NULL,
NULL,
g_cclosure_marshal_VOID__INT,
@@ -979,7 +977,7 @@ gdm_server_class_init (GdmServerClass *klass)
g_signal_new ("died",
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (GdmServerClass, died),
+ 0,
NULL,
NULL,
g_cclosure_marshal_VOID__INT,
@@ -1042,11 +1040,9 @@ gdm_server_class_init (GdmServerClass *klass)
static void
gdm_server_init (GdmServer *server)
{
- server->priv = GDM_SERVER_GET_PRIVATE (server);
+ server->pid = -1;
- server->priv->pid = -1;
-
- server->priv->log_dir = g_strdup (LOGDIR);
+ server->log_dir = g_strdup (LOGDIR);
}
static void
@@ -1059,18 +1055,16 @@ gdm_server_finalize (GObject *object)
server = GDM_SERVER (object);
- g_return_if_fail (server->priv != NULL);
-
gdm_server_stop (server);
- g_free (server->priv->command);
- g_free (server->priv->user_name);
- g_free (server->priv->session_args);
- g_free (server->priv->log_dir);
- g_free (server->priv->display_name);
- g_free (server->priv->display_seat_id);
- g_free (server->priv->display_device);
- g_free (server->priv->auth_file);
+ g_free (server->command);
+ g_free (server->user_name);
+ g_free (server->session_args);
+ g_free (server->log_dir);
+ g_free (server->display_name);
+ g_free (server->display_seat_id);
+ g_free (server->display_device);
+ g_free (server->auth_file);
G_OBJECT_CLASS (gdm_server_parent_class)->finalize (object);
}
diff --git a/daemon/gdm-server.h b/daemon/gdm-server.h
index 1801f734..d175f9b2 100644
--- a/daemon/gdm-server.h
+++ b/daemon/gdm-server.h
@@ -26,33 +26,9 @@
G_BEGIN_DECLS
-#define GDM_TYPE_SERVER (gdm_server_get_type ())
-#define GDM_SERVER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDM_TYPE_SERVER, GdmServer))
-#define GDM_SERVER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GDM_TYPE_SERVER, GdmServerClass))
-#define GDM_IS_SERVER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDM_TYPE_SERVER))
-#define GDM_IS_SERVER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GDM_TYPE_SERVER))
-#define GDM_SERVER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDM_TYPE_SERVER, GdmServerClass))
+#define GDM_TYPE_SERVER (gdm_server_get_type ())
+G_DECLARE_FINAL_TYPE (GdmServer, gdm_server, GDM, SERVER, GObject);
-typedef struct GdmServerPrivate GdmServerPrivate;
-
-typedef struct
-{
- GObject parent;
- GdmServerPrivate *priv;
-} GdmServer;
-
-typedef struct
-{
- GObjectClass parent_class;
-
- void (* ready) (GdmServer *server);
- void (* exited) (GdmServer *server,
- int exit_code);
- void (* died) (GdmServer *server,
- int signal_number);
-} GdmServerClass;
-
-GType gdm_server_get_type (void);
GdmServer * gdm_server_new (const char *display_id,
const char *seat_id,
const char *auth_file,