1 #ifndef LIBRARIES_OPENURL_H
    2 #define LIBRARIES_OPENURL_H
    3 
    4 /*
    5 **  $VER: openurl.h 6.3 (17.4.2005)
    6 **  Includes Release 6.3
    7 **
    8 **  openurl.library - universal URL display and browser
    9 **  launcher library
   10 **
   11 **  Written by Troels Walsted Hansen <troels@thule.no>
   12 **  Placed in the public domain.
   13 **
   14 **  Developed by:
   15 **  - Alfonso Ranieri <alforan@tin.it>
   16 **  - Stefan Kost <ensonic@sonicpulse.de>
   17 **
   18 */
   19 
   20 #ifndef EXEC_TYPES_H
   21 #include <exec/types.h>
   22 #endif
   23 
   24 #ifndef EXEC_LISTS_H
   25 #include <exec/lists.h>
   26 #endif
   27 
   28 #ifndef EXEC_NODES_H
   29 #include <exec/nodes.h>
   30 #endif
   31 
   32 #ifndef UTILITY_TAGITEM_H
   33 #include <utility/tagitem.h>
   34 #endif
   35 
   36 #if defined(__PPC__)
   37   #if defined(__GNUC__)
   38     #pragma pack(2)
   39   #elif defined(__VBCC__)
   40     #pragma amiga-align
   41   #endif
   42 #endif
   43 
   44 /**************************************************************************/
   45 /*
   46 ** Names
   47 */
   48 
   49 #define OPENURLNAME "openurl.library"
   50 #define OPENURLVER  6
   51 
   52 /**************************************************************************/
   53 /*
   54 ** Tags
   55 */
   56 
   57 #define URL_Tagbase                  TAG_USER
   58 
   59 #define URL_Show                     (URL_Tagbase + 1) /* ULONG - show/uniconify browser */
   60 #define URL_BringToFront             (URL_Tagbase + 2) /* ULONG - bring browser to front */
   61 #define URL_NewWindow                (URL_Tagbase + 3) /* ULONG - open URL in new window */
   62 #define URL_Launch                   (URL_Tagbase + 4) /* ULONG - launch browser when not running */
   63 #define URL_PubScreenName            (URL_Tagbase + 5) /* STRPTR - name of public screen to launch at */
   64 
   65 #define URL_GetPrefs_Default         (URL_Tagbase + 20)
   66 #define URL_SetPrefs_Save            (URL_Tagbase + 30)
   67 
   68 #define URL_GetAttr_Version          (URL_Tagbase + 60)
   69 #define URL_GetAttr_Revision         (URL_Tagbase + 61)
   70 #define URL_GetAttr_VerString        (URL_Tagbase + 62)
   71 #define URL_GetAttr_PrefsVer         (URL_Tagbase + 63)
   72 #define URL_GetAttr_HandlerVersion   (URL_Tagbase + 64)
   73 #define URL_GetAttr_HandlerRevision  (URL_Tagbase + 65)
   74 #define URL_GetAttr_HandlerVerString (URL_Tagbase + 66)
   75 
   76 /**************************************************************************/
   77 
   78 #define REXX_CMD_LEN       64
   79 #define NAME_LEN           32
   80 #define PATH_LEN          256
   81 #define PORT_LEN           32
   82 
   83 #define SHOWCMD_LEN       REXX_CMD_LEN
   84 #define TOFRONTCMD_LEN    REXX_CMD_LEN
   85 #define OPENURLCMD_LEN    REXX_CMD_LEN
   86 #define OPENURLWCMD_LEN   REXX_CMD_LEN
   87 #define WRITEMAILCMD_LEN  (REXX_CMD_LEN * 2)
   88 
   89 /**************************************************************************/
   90 /*
   91 ** Version 4 Prefs
   92 */
   93 
   94 #define PREFS_VERSION ((UBYTE)4)
   95 
   96 struct URL_Prefs
   97 {
   98 	UBYTE          up_Version;         /* always check this version number! */
   99 	struct MinList up_BrowserList;     /* list of struct URL_BrowserNodes */
  100 	struct MinList up_MailerList;      /* V3 - list of struct URL_MailerNodes */
  101 	struct MinList up_FTPList;         /* V4 - list of struct URL_MailerNodes */
  102 
  103 	ULONG          up_Flags;           /* V2 - flags, see below            */
  104 	
  105 	ULONG          up_DefShow;         /* these BOOLs are the defaults for */
  106 	ULONG          up_DefBringToFront; /* the similarly named tags         */
  107 	ULONG          up_DefNewWindow;    /* they are all new with Version 2  */
  108 	ULONG          up_DefLaunch;
  109 };
  110 
  111 /* up_Flags */
  112 enum
  113 {
  114     UPF_ISDEFAULTS  = 1<<0, /* V2 - structure contains the default settings             */
  115     UPF_PREPENDHTTP = 1<<1, /* V3 - prepend "http://" to URLs w/o scheme                */
  116     UPF_DOMAILTO    = 1<<2, /* V3 - mailto: URLs get special treatment                  */
  117     UPF_DOFTP       = 1<<3, /* V4 - ftp:// URLs get special treatment                   */
  118 };
  119 
  120 /**************************************************************************/
  121 /*
  122 ** Common #?_Flags values
  123 */
  124 
  125 enum
  126 {
  127     UNF_DISABLED = 1<<1,  /* The entry is disabled */
  128 
  129     UNF_NEW      = 1<<16, /* Reserved for OpenURL preferences application */
  130     UNF_NTALLOC  = 1<<17, /* Reserved for OpenURL preferences application */
  131 };
  132 
  133 /**************************************************************************/
  134 /*
  135 ** Browsers
  136 */
  137 
  138 struct URL_BrowserNode
  139 {
  140 	struct MinNode ubn_Node;
  141 	ULONG          ubn_Flags;                        /* flags, see below */
  142 	TEXT           ubn_Name[NAME_LEN];               /* name of webbrowser */
  143 	TEXT           ubn_Path[PATH_LEN];               /* complete path to browser */
  144 	TEXT           ubn_Port[PORT_LEN];               /* webbrowser arexx port */
  145 	TEXT           ubn_ShowCmd[SHOWCMD_LEN];         /* command to show/uniconify browser */
  146 	TEXT           ubn_ToFrontCmd[TOFRONTCMD_LEN];   /* command to bring browser to front */
  147 	TEXT           ubn_OpenURLCmd[OPENURLCMD_LEN];   /* command to open url */
  148 	TEXT           ubn_OpenURLWCmd[OPENURLWCMD_LEN]; /* command to open url in new window */
  149 };
  150 
  151 /* ubn_Flags */
  152 enum
  153 {
  154     UBNF_URLONCMDLINE = 1<<0,    /* if set, browser supports getting an URL on
  155                                     the commandline when launched. obsolete as
  156                                     of V3 - use %u on commandline instead */
  157 };
  158 
  159 /**************************************************************************/
  160 /*
  161 ** Mailers
  162 */
  163 
  164 struct URL_MailerNode
  165 {
  166 	struct MinNode umn_Node;
  167 	ULONG          umn_Flags;                          /* flags, none defined */
  168 	TEXT           umn_Name[NAME_LEN];                 /* name of mailer */
  169 	TEXT           umn_Path[PATH_LEN];                 /* complete path to mailer */
  170 	TEXT           umn_Port[PORT_LEN];                 /* mailer arexx port */
  171 	TEXT           umn_ShowCmd[SHOWCMD_LEN];           /* command to show/uniconify mailer */
  172 	TEXT           umn_ToFrontCmd[TOFRONTCMD_LEN];     /* command to bring mailer to front */
  173 	TEXT           umn_WriteMailCmd[WRITEMAILCMD_LEN]; /* command to write mail */
  174 };
  175 
  176 /**************************************************************************/
  177 /*
  178 ** FTPs
  179 */
  180 
  181 struct URL_FTPNode
  182 {
  183 	struct MinNode ufn_Node;
  184 	ULONG          ufn_Flags;                        /* flags, see below */
  185 	TEXT           ufn_Name[NAME_LEN];               /* name of ftp client */
  186 	TEXT           ufn_Path[PATH_LEN];               /* complete path to ftp client */
  187 	TEXT           ufn_Port[PORT_LEN];               /* webbrowser arexx port */
  188 	TEXT           ufn_ShowCmd[SHOWCMD_LEN];         /* command to show/uniconify ftp client */
  189 	TEXT           ufn_ToFrontCmd[TOFRONTCMD_LEN];   /* command to bring ftp client to front */
  190 	TEXT           ufn_OpenURLCmd[OPENURLCMD_LEN];   /* command to open url */
  191 	TEXT           ufn_OpenURLWCmd[OPENURLWCMD_LEN]; /* command to open url in new window */
  192 };
  193 
  194 /* ufn_Flags */
  195 enum
  196 {
  197     UFNF_REMOVEFTP = 1<<0,    /* if set, ftp:// ise removed from the URL */
  198 };
  199 
  200 /**************************************************************************/
  201 
  202 #if defined(__PPC__)
  203   #if defined(__GNUC__)
  204     #pragma pack()
  205   #elif defined(__VBCC__)
  206     #pragma default-align
  207   #endif
  208 #endif
  209 
  210 #endif /* LIBRARIES_OPENURL_H */