kde-config.cpp
00001
00002
00003
#include <kcmdlineargs.h>
00004
#include <klocale.h>
00005
#include <kinstance.h>
00006
#include <kstandarddirs.h>
00007
#include <kglobal.h>
00008
#include <kglobalsettings.h>
00009
#include <stdio.h>
00010
#include <kaboutdata.h>
00011
#include <config.h>
00012
#include <kapplication.h>
00013
00014
static const char *description = I18N_NOOP(
"A little program to output installation paths");
00015
00016
static KCmdLineOptions options[] =
00017 {
00018 {
"expandvars", I18N_NOOP(
"expand ${prefix} and ${exec_prefix} in output"), 0 },
00019 {
"prefix", I18N_NOOP(
"Compiled in prefix for KDE libraries"), 0 },
00020 {
"exec-prefix", I18N_NOOP(
"Compiled in exec_prefix for KDE libraries"), 0 },
00021 {
"libsuffix", I18N_NOOP(
"Compiled in library path suffix"), 0 },
00022 {
"localprefix", I18N_NOOP(
"Prefix in $HOME used to write files"), 0},
00023 {
"version", I18N_NOOP(
"Compiled in version string for KDE libraries"), 0 },
00024 {
"types", I18N_NOOP(
"Available KDE resource types"), 0 },
00025 {
"path type", I18N_NOOP(
"Search path for resource type"), 0 },
00026 {
"userpath type", I18N_NOOP(
"User path: desktop|autostart|trash|document"), 0 },
00027 {
"install type", I18N_NOOP(
"Prefix to install resource files to"), 0},
00028 { 0,0,0 }
00029 };
00030
00031
bool _expandvars =
false;
00032
00033
QString expandvars(
const char *_input)
00034 {
00035
QString result =
QString::fromLatin1(_input);
00036
if (!_expandvars)
00037
return result;
00038
00039
bool changed =
false;
00040
int index = result.
find(
"${prefix}");
00041
if (index >= 0) {
00042 result = result.
replace(index, 9,
"/usr");
00043 changed =
true;
00044 }
00045 index = result.
find(
"$(prefix)");
00046
if (index >= 0) {
00047 result = result.
replace(index, 9,
"/usr");
00048 changed =
true;
00049 }
00050 index = result.
find(
"${datadir}");
00051
if (index >= 0) {
00052 result = result.
replace(index, 10,
"/usr/share");
00053 changed =
true;
00054 }
00055 index = result.
find(
"$(datadir)");
00056
if (index >= 0) {
00057 result = result.
replace(index, 10,
"/usr/share");
00058 changed =
true;
00059 }
00060 index = result.
find(
"${exec_prefix}");
00061
if (index >= 0) {
00062 result = result.
replace(index, 14,
"/usr");
00063 changed =
true;
00064 }
00065 index = result.
find(
"$(exec_prefix)");
00066
if (index >= 0) {
00067 result = result.
replace(index, 14,
"/usr");
00068 changed =
true;
00069 }
00070 index = result.
find(
"${libdir}");
00071
if (index >= 0) {
00072 result = result.
replace(index, 9,
"/usr/lib");
00073 changed =
true;
00074 }
00075 index = result.
find(
"$(libdir)");
00076
if (index >= 0) {
00077 result = result.
replace(index, 9,
"/usr/lib");
00078 changed =
true;
00079 }
00080 index = result.
find(
"${includedir}");
00081
if (index >= 0) {
00082 result = result.
replace(index, 20,
"/usr/include");
00083 changed =
true;
00084 }
00085 index = result.
find(
"$(includedir)");
00086
if (index >= 0) {
00087 result = result.
replace(index, 20,
"/usr/include");
00088 changed =
true;
00089 }
00090 index = result.
find(
"${sysconfdir}");
00091
if (index >= 0) {
00092 result = result.
replace(index, 13,
"/etc");
00093 changed =
true;
00094 }
00095 index = result.
find(
"$(sysconfdir)");
00096
if (index >= 0) {
00097 result = result.
replace(index, 13,
"/etc");
00098 changed =
true;
00099 }
00100
if (changed)
00101
return expandvars(result.
latin1());
00102
else
00103
return result;
00104 }
00105
00106
void printResult(
const QString &s)
00107 {
00108
if (s.
isEmpty())
00109 printf(
"\n");
00110
else
00111 printf(
"%s\n", s.
local8Bit().data());
00112 }
00113
00114
int main(
int argc,
char **argv)
00115 {
00116
KLocale::setMainCatalogue(
"kdelibs");
00117
KAboutData about(
"kde-config",
"kde-config",
"1.0", description, KAboutData::License_GPL,
"(C) 2000 Stephan Kulow");
00118
KCmdLineArgs::init( argc, argv, &about);
00119
00120
KCmdLineArgs::addCmdLineOptions( options );
00121
00122
KInstance a(
"kde-config");
00123 (
void)
KGlobal::dirs();
00124 (
void)
KGlobal::config();
00125
00126
00127
KCmdLineArgs *args =
KCmdLineArgs::parsedArgs();
00128
00129 _expandvars = args->
isSet(
"expandvars");
00130
00131
if (args->
isSet(
"prefix"))
00132 {
00133 printResult(expandvars(
"/usr"));
00134
return 0;
00135 }
00136
00137
if (args->
isSet(
"exec-prefix"))
00138 {
00139 printResult(expandvars(
"/usr"));
00140
return 0;
00141 }
00142
00143
if (args->
isSet(
"libsuffix"))
00144 {
00145
QString tmp(KDELIBSUFF);
00146 tmp.
remove(
'"');
00147 printResult(expandvars(tmp.
local8Bit()));
00148
return 0;
00149 }
00150
00151
if (args->
isSet(
"localprefix"))
00152 {
00153 printResult(KGlobal::dirs()->localkdedir());
00154
return 0;
00155 }
00156
00157
if (args->
isSet(
"version"))
00158 {
00159 printf(
"%s\n", KDE_VERSION_STRING);
00160
return 0;
00161 }
00162
00163
if (args->
isSet(
"types"))
00164 {
00165
QStringList types =
KGlobal::dirs()->
allTypes();
00166 types.
sort();
00167
const char *helptexts[] = {
00168
"apps", I18N_NOOP(
"Applications menu (.desktop files)"),
00169
"cgi", I18N_NOOP(
"CGIs to run from kdehelp"),
00170
"config", I18N_NOOP(
"Configuration files"),
00171
"data", I18N_NOOP(
"Where applications store data"),
00172
"exe", I18N_NOOP(
"Executables in $prefix/bin"),
00173
"html", I18N_NOOP(
"HTML documentation"),
00174
"icon", I18N_NOOP(
"Icons"),
00175
"kcfg", I18N_NOOP(
"Configuration description files"),
00176
"lib", I18N_NOOP(
"Libraries"),
00177
"include", I18N_NOOP(
"Includes/Headers"),
00178
"locale", I18N_NOOP(
"Translation files for KLocale"),
00179
"mime", I18N_NOOP(
"Mime types"),
00180
"module", I18N_NOOP(
"Loadable modules"),
00181
"qtplugins", I18N_NOOP(
"Qt plugins"),
00182
"services", I18N_NOOP(
"Services"),
00183
"servicetypes", I18N_NOOP(
"Service types"),
00184
"sound", I18N_NOOP(
"Application sounds"),
00185
"templates", I18N_NOOP(
"Templates"),
00186
"wallpaper", I18N_NOOP(
"Wallpapers"),
00187
"xdgdata-apps", I18N_NOOP(
"XDG Application menu (.desktop files)"),
00188
"xdgdata-dirs", I18N_NOOP(
"XDG Menu descriptions (.directory files)"),
00189
"xdgconf-menu", I18N_NOOP(
"XDG Menu layout (.menu files)"),
00190
"tmp", I18N_NOOP(
"Temporary files (specific for both current host and current user)"),
00191
"socket", I18N_NOOP(
"UNIX Sockets (specific for both current host and current user)"),
00192 0, 0
00193 };
00194
for (QStringList::ConstIterator it = types.begin(); it != types.end(); ++it)
00195 {
00196
int index = 0;
00197
while (helptexts[index] && *it != helptexts[index]) {
00198 index += 2;
00199 }
00200
if (helptexts[index]) {
00201 printf(
"%s - %s\n", helptexts[index], i18n(helptexts[index+1]).local8Bit().data());
00202 }
else {
00203 printf(
"%s", i18n(
"%1 - unknown type\n").arg(*it).
local8Bit().data());
00204 }
00205 }
00206
return 0;
00207 }
00208
00209
QString type = args->
getOption(
"path");
00210
if (!type.
isEmpty())
00211 {
00212 printResult(KGlobal::dirs()->resourceDirs(type.
latin1()).join(
":"));
00213
return 0;
00214 }
00215
00216 type = args->
getOption(
"userpath");
00217
if (!type.
isEmpty())
00218 {
00219
if ( type ==
"desktop" )
00220 printResult(KGlobalSettings::desktopPath());
00221
else if ( type ==
"autostart" )
00222 printResult(KGlobalSettings::autostartPath());
00223
else if ( type ==
"trash" )
00224 printResult(KGlobalSettings::trashPath());
00225
else if ( type ==
"document" )
00226 printResult(KGlobalSettings::documentPath());
00227
else
00228 fprintf(stderr,
"%s", i18n(
"%1 - unknown type of userpath\n").arg(type).local8Bit().data() );
00229
return 0;
00230 }
00231
00232 type = args->
getOption(
"install");
00233
if (!type.
isEmpty())
00234 {
00235
const char *installprefixes[] = {
00236
"apps",
"${datadir}/applnk",
00237
"config",
"${datadir}/config",
00238
"kcfg",
"${datadir}/config.kcfg",
00239
"data",
"${datadir}/apps",
00240
"exe",
"${exec_prefix}/bin",
00241
"html",
"${datadir}/doc/HTML",
00242
"icon",
"${datadir}/icons",
00243
"lib",
"/usr/lib",
00244
"module",
"${libdir}/kde3",
00245
"qtplugins",
"${libdir}/kde3/plugins",
00246
"locale",
"${datadir}/locale",
00247
"mime",
"${datadir}/mimelnk",
00248
"services",
"${datadir}/services",
00249
"servicetypes",
"${datadir}/servicetypes",
00250
"sound",
"${datadir}/sounds",
00251
"templates",
"${datadir}/templates",
00252
"wallpaper",
"${datadir}/wallpapers",
00253
"xdgconf-menu",
"${sysconfdir}/xdg/menus",
00254
"xdgdata-apps",
"${datadir}/applications/kde",
00255
"xdgdata-dirs",
"${datadir}/desktop-directories",
00256
"include",
"/usr/include",
00257 0, 0
00258 };
00259
int index = 0;
00260
while (installprefixes[index] && type != installprefixes[index]) {
00261 index += 2;
00262 }
00263
if (installprefixes[index]) {
00264 printResult(expandvars(installprefixes[index+1]));
00265 }
else {
00266 printResult(
"NONE");
00267 }
00268 }
00269
return 0;
00270 }
This file is part of the documentation for kdecore Library Version 3.4.0.