home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * The contents of this file are subject to the Netscape Public License
- * Version 1.0 (the "NPL"); you may not use this file except in
- * compliance with the NPL. You may obtain a copy of the NPL at
- * http://www.mozilla.org/NPL/
- *
- * Software distributed under the NPL is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
- * for the specific language governing rights and limitations under the
- * NPL.
- *
- * The Initial Developer of this code under the NPL is Netscape
- * Communications Corporation. Portions created by Netscape are
- * Copyright (C) 1998 Netscape Communications Corporation. All Rights
- * Reserved.
- */
-
- #ifndef __ExtensionGenerator_H
- #define __ExtensionGenerator_H
-
- /* Author:
- * Garrett Arch Blythe
- * blythe@netscape.com
- */
-
- /*--------------------------------------------------------------------------**
- ** Flags passed into the EXT_* functions. **
- ** **
- ** EXT_PRESERVE_EXT The generated extension must be based on the **
- ** provided file/url name. **
- ** EXT_PRESERVE_MIME The generated extension must be based on the **
- ** provided mime type. **
- ** EXT_SHELL_EXECUTABLE The generated extension must be ShellExecutable. **
- ** EXT_NO_PERIOD The generated extension will not contain a **
- ** leading period. **
- ** EXT_DOT_THREE Limit generated extension to 3 characters for **
- ** 16 bit operating system compatibility. **
- ** EXT_EXECUTABLE_IDENTITY Only has meaning when used in conjunction with **
- ** EXT_SHELL_EXECUTABLE. When specified, it **
- ** will allow EXT_SHELL_EXECUTABLE flag to **
- ** succeed when the extension generated itself **
- ** is executable (.exe, .bat, .lnk, etc.). **
- ** This behavior is off by default. **
- **--------------------------------------------------------------------------*/
- #define EXT_PRESERVE_EXT 0x00000001UL
- #define EXT_PRESERVE_MIME 0x00000002UL
- #define EXT_SHELL_EXECUTABLE 0x00000004UL
- #define EXT_NO_PERIOD 0x00000008UL
- #define EXT_DOT_THREE 0x00000010UL
- #define EXT_EXECUTABLE_IDENTITY 0x00000020UL
-
- /*-----------------------------------------------------------------------**
- ** EXT_Invent Autogenerate an extension from provided criteria. **
- ** Uses a complex approach, attempting to find the **
- ** best possible extension under any given **
- ** circumstance when an extension is abosulutely **
- ** needed. **
- ** This function mainly calls EXT_Generate will certain **
- ** combinations of flags in a certain priority. **
- ** READS: Heuristic, don't muck with this casually. **
- ** **
- ** Returns size_t 0 on failure or no extension available. **
- ** Number of bytes written to pOutExtension on success. **
- ** If pOutExtension is NULL, then number of bytes needed **
- ** not including terminating NULL character. **
- ** **
- ** pOutExtension Returned extension once generated. Can be NULL if **
- ** querying size of buffer needed. **
- ** stExtBufSize Size in bytes of pOutExtension. Ignored if **
- ** pOutExtension is NULL. **
- ** dwFlags Combination of flags indicating which algorithm to **
- ** use to generate the extension. The only flags **
- ** currently allowed are EXT_NO_PERIOD and **
- ** EXT_DOT_THREE. **
- ** pOrigName File, URL, or .EXT which we are deriving the **
- ** extension from. Can be NULL. **
- ** pMimeType Mime type which we are deriving the extension from. **
- ** Can be NULL. **
- **-----------------------------------------------------------------------*/
- size_t EXT_Invent(char *pOutExtension, size_t stExtBufSize, DWORD dwFlags, const char *pOrigName, const char *pMimeType);
-
- /*-----------------------------------------------------------------------**
- ** EXT_Generate Autogenerate an extension from provided criteria. **
- ** **
- ** Returns size_t 0 on failure or no extension available. **
- ** Number of bytes written to pOutExtension on success. **
- ** If pOutExtension is NULL, then number of bytes needed **
- ** not including terminating NULL character. **
- ** **
- ** pOutExtension Returned extension once generated. Can be NULL if **
- ** querying size of buffer needed. **
- ** stExtBufSize Size in bytes of pOutExtension. Ignored if **
- ** pOutExtension is NULL. **
- ** dwFlags Combination of flags indicating which algorithm to **
- ** use to generate the extension. All flags are **
- ** allowed. **
- ** pOrigName File, URL, or .EXT which we are deriving the **
- ** extension from. Can be NULL. **
- ** pMimeType Mime type which we are deriving the extension from. **
- ** Can be NULL. **
- **-----------------------------------------------------------------------*/
- size_t EXT_Generate(char *pOutExtension, size_t stExtBufSize, DWORD dwFlags, const char *pOrigName, const char *pMimeType);
-
- #endif // __ExtensionGenerator_H
-
-