diff options
Diffstat (limited to 'kcontrol/kfontinst/kfontinst/Main.cpp')
-rw-r--r-- | kcontrol/kfontinst/kfontinst/Main.cpp | 335 |
1 files changed, 0 insertions, 335 deletions
diff --git a/kcontrol/kfontinst/kfontinst/Main.cpp b/kcontrol/kfontinst/kfontinst/Main.cpp deleted file mode 100644 index 6db9b83c8..000000000 --- a/kcontrol/kfontinst/kfontinst/Main.cpp +++ /dev/null @@ -1,335 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// File Name : Main.cpp -// Author : Craig Drummond -// Project : K Font Installer -// Creation Date : 20/03/2003 -// Version : $Revision$ $Date$ -// -//////////////////////////////////////////////////////////////////////////////// -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// -//////////////////////////////////////////////////////////////////////////////// -// (C) Craig Drummond, 2003, 2004 -//////////////////////////////////////////////////////////////////////////////// - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "Misc.h" -#include "FontEngine.h" -#include "Fontmap.h" -#include "XConfig.h" -#include "kxftconfig.h" -#include <fontconfig/fontconfig.h> -#include <tqfile.h> -#include <stdio.h> - -// -// Bug#99335 Solaris 2.6 does not have getopt.h :-( -#ifdef HAVE_GETOPT_H -#include <getopt.h> -#else -#include <unistd.h> -#endif -#include <iostream> - -#define KFI_XF86CFG "XF86Config" -#define KFI_XORGCFG "xorg.conf" - -static const char * getFile(const char *entry, const char **posibilities) -{ - if(KFI::Misc::fExists(entry)) - return entry; - else - { - int f; - - for(f=0; posibilities[f]; ++f) - if(KFI::Misc::fExists(posibilities[f])) - break; - - return posibilities[f]; - } -} - -static const char * constXConfigFiles[]= -{ - "/etc/X11/"KFI_XORGCFG, - "/etc/X11/"KFI_XORGCFG"-4", - "/etc/"KFI_XORGCFG, - "/usr/X11R6/etc/X11/"KFI_XORGCFG, - "/usr/X11R6/etc/X11/"KFI_XORGCFG"-4", - "/usr/X11R6/lib/X11/"KFI_XORGCFG, - "/usr/X11R6/lib/X11/"KFI_XORGCFG"-4", - - "/etc/X11/"KFI_XF86CFG"-4", - "/etc/X11/"KFI_XF86CFG, - "/etc/"KFI_XF86CFG"-4", - "/etc/"KFI_XF86CFG, - "/usr/X11R6/etc/X11/"KFI_XF86CFG"-4", - "/usr/X11R6/etc/X11/"KFI_XF86CFG, - "/usr/X11R6/lib/X11/"KFI_XF86CFG"-4", - "/usr/X11R6/lib/X11/"KFI_XF86CFG, - - NULL -}; - -static const char * constXfsConfigFiles[]= -{ - "/etc/X11/fs/config", - "/usr/openwin/lib/X11/fonts/fontserver.cfg", - NULL -}; - -KFI::CXConfig * getXCfg(bool root) -{ - if(root) - { - // - // Try to determine location for X and xfs config files... - // ...note on some systems (Solaris and HP-UX) only the xfs file will be found - bool xfs=false; - KFI::CXConfig *xcfg=NULL; - TQString xConfigFile=getFile(TQFile::encodeName(constXConfigFiles[0]), constXConfigFiles), - xfsConfigFile=getFile(TQFile::encodeName(constXfsConfigFiles[0]), constXfsConfigFiles); - - // If found xfs, but not X - then assume that xfs is being used... - if(!xfsConfigFile.isEmpty() && xConfigFile.isEmpty()) - xfs=true; - else if(!xConfigFile.isEmpty()) // Read xConfig file to determine which one... - { - xcfg=new KFI::CXConfig(KFI::CXConfig::X11, xConfigFile); - - if(!xfsConfigFile.isEmpty() && xcfg->xfsInPath()) - { - delete xcfg; - xfs=true; - } - } - - // OK, if still set to X11 config, but this mentions fontconfig FPE, then delete - as we're not interested - // anymore... - if(xcfg && xcfg->fcInPath()) - delete xcfg; - - return xfs ? new KFI::CXConfig(KFI::CXConfig::XFS, xfsConfigFile) : xcfg; - } - - return NULL; -} - -static void usage(char *app) -{ - std::cerr << "Usage: " << app << " [OPTIONS]... [FOLDER]..." << std::endl - << std::endl - << " Helper application for KDE's fonts:/ ioslave." << std::endl - << std::endl -#ifdef HAVE_GETOPT_H - << " -x, --configure_x Configure FOLDER for regular x - i.e." << std::endl - << " create fonts.dir, fonts.scale and encodngs.dir" << std::endl - << std::endl - << " -g, --configure_gs Create Fontmap file. If run as root, then " << std::endl - << " no paramter is required as all fonts are " << std::endl - << " configured, and Fontmap placed in /etc/fonts" << std::endl - << " For non-root, fonts located in FOLDER are" << std::endl - << " configured, and Fontmap placed there." << std::endl - << std::endl - << " -f, --add_to_fc_cfg Add FOLDER to fontconfig config files." << std::endl - << std::endl - << " -a, --add_to_x_cfg Add FOLDER to X config files only when run as root.," << std::endl - << std::endl - << " -r, --refresh_x Refresh X." << std::endl - << std::endl - << " -s, --refresh_xfs Refresh Xfs." << std::endl -#else - << " -x Configure FOLDER for regular x - i.e." << std::endl - << " create fonts.dir, fonts.scale and encodngs.dir" << std::endl - << std::endl - << " -g Create Fontmap file. If run as root, then " << std::endl - << " no paramter is required as all fonts are " << std::endl - << " configured, and Fontmap placed in /etc/fonts" << std::endl - << " For non-root, fonts located in FOLDER are" << std::endl - << " configured, and Fontmap placed there." << std::endl - << std::endl - << " -f Add FOLDER to fontconfig config files." << std::endl - << std::endl - << " -a Add FOLDER to X config files only when run as root.," << std::endl - << std::endl - << " -r Refresh X." << std::endl - << std::endl - << " -s Refresh Xfs." << std::endl -#endif - << std::endl - << std::endl - << " (C) Craig Drummond, 2003, 2004." << std::endl - << std::endl; - - exit(-1); -} - -void refresh(bool refreshX, bool refreshXfs, bool root) -{ - if(refreshX) - KFI::CXConfig::refreshPaths(false); - if(refreshXfs && root) - KFI::CXConfig::refreshPaths(true); -} - -int main(int argc, char *argv[]) -{ -#ifdef HAVE_GETOPT_H - static struct option options[]= - { - { "configure_x", 0, 0, 'x' }, - { "configure_gs", 0, 0, 'g' }, - { "add_to_fc_cfg", 0, 0, 'f' }, - { "add_to_x_cfg", 0, 0, 'a' }, - { "refresh_x", 0, 0, 'r' }, - { "refresh_xfs", 0, 0, 's' }, - { 0, 0, 0, 0 } - }; -#endif - - int c=0, - rv=0; - bool doX=false, - doGs=false, - addToX=false, - addToFc=false, - refreshX=false, - refreshXfs=false, - root=KFI::Misc::root(); - -#ifdef HAVE_GETOPT_H - int optIndex; - while(-1!=(c=getopt_long(argc, argv, "xgfars", options, &optIndex))) -#else - while(-1!=(c=getopt(argc, argv, "xgfars"))) -#endif - switch(c) - { - case 'x': - doX=true; - break; - case 'g': - doGs=true; - break; - case 'f': - addToFc=true; - break; - case 'a': - addToX=true; - break; - case 'r': - refreshX=true; - break; - case 's': - refreshXfs=true; - break; - case '?': - usage(argv[0]); - break; - } - - int left=argc-optind; - bool folderRequired=doX || addToX || addToFc || (!root && doGs); - - if (left>1 || (0==left && folderRequired) || (!doX && !doGs && !addToX && !addToFc)) - usage(argv[0]); - else - { - TQString folder; - - if(folderRequired) - { - folder=argv[optind]; - unsigned int len=folder.length(); - - // Remove quotes... - if( (folder[0]==TQChar('\'') || folder[0]==TQChar('\"')) && - (folder[len-1]==TQChar('\'') || folder[len-1]==TQChar('\"'))) - folder=folder.mid(1, len-2); - folder=KFI::Misc::dirSyntax(folder); - } - - if(folderRequired && !KFI::Misc::dExists(folder)) - { - std::cerr << "ERROR: " << static_cast<const char *>(TQFile::encodeName(folder)) << " does not exist!" << std::endl; - rv=-2; - } - else - { - if(!folder.isEmpty()) - { - if(0==rv && addToFc) - { - // - // Only add folder to fontconfig's config if its not already there... - FcStrList *list=FcConfigGetFontDirs(FcConfigGetCurrent()); - FcChar8 *dir; - bool found=false; - - while((dir=FcStrListNext(list))) - if(0==KFI::Misc::dirSyntax((const char *)dir).find(folder)) - found=true; - - if(!found) - { - KXftConfig *xft=new KXftConfig(KXftConfig::Dirs, root); - - xft->addDir(folder); - rv=xft->apply() ? 0 : -3; - delete xft; - } - } - - if(0==rv && addToX && root) - { - KFI::CXConfig *x=NULL; - - if((x=getXCfg(true))) - { - x->addPath(folder); - rv=x->writeConfig() ? 0 : -4; - delete x; - } - else - rv=-5; - } - } - - if(0==rv && (doX || doGs)) - { - if(0==rv && doX) - rv=KFI::CXConfig::configureDir(folder) ? 0 : -5; - - refresh(refreshX, refreshXfs, root); - - if(0==rv && doGs) - { - KFI::CFontEngine fe; - rv=KFI::Fontmap::create(root ? TQString::null : folder, fe) ? 0 : -6; - } - } - else if(0==rv) - refresh(refreshX, refreshXfs, root); - } - } - - return rv; -} |