• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

KInit

  • sources
  • kde-4.12
  • kdelibs
  • kinit
Macros | Functions | Variables
kinit.cpp File Reference
#include <config.h>
#include <config-kdeinit.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <sys/wait.h>
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#include "proctitle.h"
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <locale.h>
#include <QtCore/QLibrary>
#include <QtCore/QString>
#include <QtCore/QFile>
#include <QtCore/QDate>
#include <QtCore/QFileInfo>
#include <QtCore/QRegExp>
#include <QtGui/QFont>
#include <kcomponentdata.h>
#include <klibrary.h>
#include <kdemacros.h>
#include <kstandarddirs.h>
#include <kglobal.h>
#include <kconfig.h>
#include <kapplication.h>
#include <klocale.h>
#include <kdebug.h>
#include <kde_file.h>
#include <ksavefile.h>
#include <sys/prctl.h>
#include <kdeversion.h>
#include "klauncher_cmds.h"
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <fixx11h.h>
#include <kstartupinfo.h>
Include dependency graph for kinit.cpp:

Go to the source code of this file.

Macros

#define DISPLAY   "DISPLAY"
 
#define MAX_SOCK_FILE   255
 
#define PR_SET_NAME   15
 
#define QT_NO_CAST_FROM_ASCII
 

Functions

static void child_died (pid_t exit_pid, int exit_status)
 
static void cleanup_fds ()
 
static void close_fds ()
 
static void complete_startup_info (KStartupInfoId &id, pid_t pid)
 
QByteArray execpath_avoid_loops (const QByteArray &exec, int envc, const char *envs, bool avoid_loops)
 
static void exitWithErrorMsg (const QString &errorMsg)
 
static int get_current_desktop (Display *disp)
 
const char * get_env_var (const char *var, int envc, const char *envs)
 
static bool handle_launcher_request (int sock, const char *who)
 
static void handle_requests (pid_t waitForPid)
 
static void init_kdeinit_socket ()
 
static void init_signals ()
 
static void init_startup_info (KStartupInfoId &id, const char *bin, int envc, const char *envs)
 
static int initXconnection ()
 
static void kdeinit_library_path ()
 
int kdeinit_x_errhandler (Display *, XErrorEvent *err)
 
int kdeinit_xio_errhandler (Display *)
 
static pid_t launch (int argc, const char *_name, const char *args, const char *cwd=0, int envc=0, const char *envs=0, bool reset_env=false, const char *tty=0, bool avoid_loops=false, const char *startup_id_str="0")
 
static void launcher_died ()
 
int main (int argc, char **argv, char **envp)
 
static int read_socket (int sock, char *buffer, int len)
 
static void reset_oom_protect ()
 
static void secondary_child_handler (int)
 
static void setup_tty (const char *tty)
 
static void setupX ()
 
static void sig_child_handler (int)
 
static void start_klauncher ()
 

Variables

static struct child * children
 
struct {
   int   accepted_fd
 
   char **   argv
 
   int   deadpipe [2]
 
   bool   debug_wait
 
   QByteArray   errorMsg
 
   int   exit_status
 
   int   fd [2]
 
   pid_t   fork
 
   int(*   func )(int, char *[])
 
   int   initpipe [2]
 
   pid_t   kded_pid
 
   int   launcher [2]
 
   int(*   launcher_func )(int)
 
   bool   launcher_ok
 
   pid_t   launcher_pid
 
   int   maxname
 
   int   n
 
   char   result
 
   bool   suicide
 
   int   wrapper
 
} d
 
char ** environ
 
static const char * extra_libs []
 
static KComponentData * s_instance = 0
 
static char sock_file [MAX_SOCK_FILE]
 
static Display * X11_startup_notify_display = 0
 
static int X11_startup_notify_fd = -1
 
static Display * X11display = 0
 
static int X11fd = -1
 

Macro Definition Documentation

#define DISPLAY   "DISPLAY"

Definition at line 115 of file kinit.cpp.

#define MAX_SOCK_FILE   255

Definition at line 111 of file kinit.cpp.

#define PR_SET_NAME   15

Definition at line 71 of file kinit.cpp.

#define QT_NO_CAST_FROM_ASCII

Definition at line 22 of file kinit.cpp.

Function Documentation

static void child_died ( pid_t  exit_pid,
int  exit_status 
)
static

Definition at line 261 of file kinit.cpp.

static void cleanup_fds ( )
static

Definition at line 177 of file kinit.cpp.

static void close_fds ( )
static

Definition at line 196 of file kinit.cpp.

static void complete_startup_info ( KStartupInfoId &  id,
pid_t  pid 
)
static

Definition at line 384 of file kinit.cpp.

QByteArray execpath_avoid_loops ( const QByteArray &  exec,
int  envc,
const char *  envs,
bool  avoid_loops 
)

Definition at line 403 of file kinit.cpp.

static void exitWithErrorMsg ( const QString &  errorMsg)
static

Definition at line 290 of file kinit.cpp.

static int get_current_desktop ( Display *  disp)
static

Definition at line 325 of file kinit.cpp.

const char* get_env_var ( const char *  var,
int  envc,
const char *  envs 
)

Definition at line 348 of file kinit.cpp.

static bool handle_launcher_request ( int  sock,
const char *  who 
)
static

Definition at line 1088 of file kinit.cpp.

static void handle_requests ( pid_t  waitForPid)
static

Definition at line 1317 of file kinit.cpp.

static void init_kdeinit_socket ( )
static

Test if socket file is already present note that access() resolves symlinks, and so we check the actual socket file if it exists

Delete any stale socket file (and symlink)

create socket

bind it

set permissions

Definition at line 871 of file kinit.cpp.

static void init_signals ( )
static

Definition at line 820 of file kinit.cpp.

static void init_startup_info ( KStartupInfoId &  id,
const char *  bin,
int  envc,
const char *  envs 
)
static

Definition at line 366 of file kinit.cpp.

static int initXconnection ( )
static

Definition at line 1620 of file kinit.cpp.

static void kdeinit_library_path ( )
static

Definition at line 1430 of file kinit.cpp.

int kdeinit_x_errhandler ( Display *  dpy,
XErrorEvent *  err 
)

Definition at line 1552 of file kinit.cpp.

int kdeinit_xio_errhandler ( Display *  disp)

Delete any stale socket file

Definition at line 1505 of file kinit.cpp.

static pid_t launch ( int  argc,
const char *  _name,
const char *  args,
const char *  cwd = 0,
int  envc = 0,
const char *  envs = 0,
bool  reset_env = false,
const char *  tty = 0,
bool  avoid_loops = false,
const char *  startup_id_str = "0" 
)
static

Child

Give the process a new name

Parent

Definition at line 467 of file kinit.cpp.

static void launcher_died ( )
static

Definition at line 1059 of file kinit.cpp.

int main ( int  argc,
char **  argv,
char **  envp 
)

Save arguments first...

Make process group leader (for shutting down children later)

Create our instance

Prepare to change process name

Free arguments

Definition at line 1652 of file kinit.cpp.

static int read_socket ( int  sock,
char *  buffer,
int  len 
)
static

Definition at line 1022 of file kinit.cpp.

static void reset_oom_protect ( )
static

Definition at line 463 of file kinit.cpp.

static void secondary_child_handler ( int  )
static

Definition at line 1645 of file kinit.cpp.

static void setup_tty ( const char *  tty)
static

Definition at line 303 of file kinit.cpp.

static void setupX ( )
static

Definition at line 1577 of file kinit.cpp.

static void sig_child_handler ( int  )
static

Definition at line 804 of file kinit.cpp.

static void start_klauncher ( )
static

Definition at line 1042 of file kinit.cpp.

Variable Documentation

int accepted_fd

Definition at line 134 of file kinit.cpp.

char** argv

Definition at line 141 of file kinit.cpp.

struct child* children
static

Definition at line 157 of file kinit.cpp.

struct { ... } d
int deadpipe[2]

Definition at line 131 of file kinit.cpp.

bool debug_wait

Definition at line 144 of file kinit.cpp.

char** environ
QByteArray errorMsg

Definition at line 145 of file kinit.cpp.

int exit_status

Definition at line 136 of file kinit.cpp.

const char* extra_libs[]
static
Initial value:
= {
"libkio.so.5",
"libkparts.so.4",
}

Definition at line 91 of file kinit.cpp.

int fd[2]

Definition at line 129 of file kinit.cpp.

pid_t fork

Definition at line 137 of file kinit.cpp.

int(* func)(int, char *[])

Definition at line 142 of file kinit.cpp.

int initpipe[2]

Definition at line 132 of file kinit.cpp.

pid_t kded_pid

Definition at line 139 of file kinit.cpp.

int launcher[2]

Definition at line 130 of file kinit.cpp.

int(* launcher_func)(int)

Definition at line 143 of file kinit.cpp.

bool launcher_ok

Definition at line 146 of file kinit.cpp.

pid_t launcher_pid

Definition at line 138 of file kinit.cpp.

int maxname

Definition at line 128 of file kinit.cpp.

int n

Definition at line 140 of file kinit.cpp.

char result

Definition at line 135 of file kinit.cpp.

KComponentData* s_instance = 0
static

Definition at line 110 of file kinit.cpp.

char sock_file[MAX_SOCK_FILE]
static

Definition at line 112 of file kinit.cpp.

bool suicide

Definition at line 147 of file kinit.cpp.

int wrapper

Definition at line 133 of file kinit.cpp.

Display* X11_startup_notify_display = 0
static

Definition at line 108 of file kinit.cpp.

int X11_startup_notify_fd = -1
static

Definition at line 107 of file kinit.cpp.

Display* X11display = 0
static

Definition at line 106 of file kinit.cpp.

int X11fd = -1
static

Definition at line 105 of file kinit.cpp.

This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:49:06 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KInit

Skip menu "KInit"
  • Main Page
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal