home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: WPS_PM / WPS_PM.zip / xfld085s.zip / repclass / repclass.c
C/C++ Source or Header  |  1998-10-19  |  4KB  |  101 lines

  1. /*
  2.  * repclass.c:
  3.  *      This file contains the REPCLASS utility for registering
  4.  *      a new WPS class and replacing an existing class with it
  5.  *      in one step. The command-line syntax is:
  6.  *
  7.  *          repclass <oldclass> <newclass> [<dllname>]
  8.  *
  9.  *      If <dllname> is specified, <newclass> is registered and
  10.  *      replaces <oldclass>.
  11.  *
  12.  *      If <dllname> is omitted, the replacement of <oldclass>
  13.  *      with <newclass> is undone and <newclass> is de-registered.
  14.  *
  15.  *      Initial release: Aug. 12, 1998
  16.  *      This version: 0.82. Made the output msgs a bit more lucid.
  17.  *
  18.  *      Copyright (C) 1997-98 Ulrich Möller.
  19.  *      This program is free software; you can redistribute it and/or modify
  20.  *      it under the terms of the GNU General Public License as published by
  21.  *      the Free Software Foundation, in version 2 as it comes in the COPYING
  22.  *      file of the XFolder main distribution.
  23.  *      This program is distributed in the hope that it will be useful,
  24.  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
  25.  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  26.  *      GNU General Public License for more details.
  27.  */
  28.  
  29. #include <stdio.h>
  30. #include <os2.h>
  31.  
  32. /*
  33.  * main:
  34.  *      evaluate the command line, perform error checking
  35.  *      and do all the (de)registering and (un)replacing.
  36.  */
  37.  
  38. void main(int argc, char *argv[])
  39. {
  40.     /* The argv array will contain the following:
  41.      *         0         1          2            3
  42.      *      repclass <oldclass> <newclass> [<dllname>]
  43.      */
  44.  
  45.     BOOL rc1, rc2;
  46.  
  47.     if (argc == 4) {
  48.         // four parameters: user wants registering.
  49.         // First register <newclass>
  50.         printf("Registering %s with the WPS class list: ", argv[2]);
  51.         if (WinRegisterObjectClass(argv[2], argv[3])) {
  52.             printf("OK\n");
  53.         } else {
  54.             printf("failed!\n");
  55.         }
  56.         // Then replace <oldclass> with <newclass>.
  57.         printf ("Replacing %s with %s: ", argv[1], argv[2]);
  58.         if (WinReplaceObjectClass(argv[1], argv[2], TRUE)) {
  59.             printf("OK\n");
  60.         } else {
  61.             printf("failed!\n");
  62.         }
  63.     } else if (argc == 3) {
  64.         // three parameters: user wants deregistering.
  65.         // First undo replacement of <oldclass> with <newclass>.
  66.         printf ("Un-replacing %s with %s: ", argv[2], argv[1]);
  67.         if (WinReplaceObjectClass(argv[1], argv[2], FALSE)) {
  68.             printf("OK\n");
  69.         } else {
  70.             printf("failed!\n");
  71.         }
  72.         // Then deregister <newclass>.
  73.         printf ("Deregistering %s: ", argv[2]);
  74.         if (WinDeregisterObjectClass(argv[2])) {
  75.             printf("OK\n");
  76.         } else {
  77.             printf("failed!\n");
  78.         }
  79.     } else {
  80.         // neither three nor four parameters: explain ourselves.
  81.         printf("repclass V0.82 (w) (c) 1998 Ulrich Möller\n");
  82.         printf("Part of the XFolder package.\n");
  83.         printf("This is free software under the GNU General Public Licence (GPL).\n");
  84.         printf("Refer to the COPYING file in the XFolder installation dir for details.\n");
  85.         printf("Replaces a given Workplace Shell class or undoes a replacement.\n");
  86.         printf("Usage: repclass <oldclass> <newclass> [<dllname>]\n");
  87.         printf("with:\n");
  88.         printf("   <oldclass>  being a currently installed WPS class;\n");
  89.         printf("   <newclass>  the name of the new class to replace <oldclass> with;\n");
  90.         printf("   <dllname>   the filename of the DLL which contains <newclass>; if the DLL\n");
  91.         printf("               is not on the LIBPATH, you must specify a full path.\n");
  92.         printf("If <dllname> is omitted, <newclass> will be removed from the replacement list\n");
  93.         printf("for <oldclass>.\n");
  94.         printf("Class names are case-sensitive.\n");
  95.         printf("Examples:\n");
  96.         printf("   repclass WPFolder XFolder xfolder.dll -- register XFolder\n");
  97.         printf("   repclass WPFolder XFolder             -- unregister XFolder\n");
  98.     }
  99. }
  100.  
  101.