mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-06 09:05:45 +00:00
173 lines
5.1 KiB
C
173 lines
5.1 KiB
C
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public
|
|
* License Version 1.1 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS
|
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
* implied. See the License for the specific language governing
|
|
* rights and limitations under the License.
|
|
*
|
|
* The Original Code is mozilla.org code.
|
|
*
|
|
* The Initial Developer of the Original Code is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All
|
|
* Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
*/
|
|
/*
|
|
*
|
|
* All function that are of general use in libfont/ are implemented here.
|
|
*
|
|
* dp Suresh <dp@netscape.com>
|
|
*/
|
|
|
|
|
|
// XXX Must make this a class of its own.
|
|
|
|
//
|
|
// Rounds an integer to the next higher integer that is divisible by roundto
|
|
//
|
|
#define WF_ROUND_INT(a, roundto) (((int)((a)/(roundto)) + 1) * (roundto))
|
|
|
|
//
|
|
// MergeSizes
|
|
//
|
|
// Merge size lists together. A size list is an array of size values
|
|
// (non-negative) terminated by a negative value.
|
|
// It takes a newSizes list and merges this into the oldSizes list allocating
|
|
// memory for the oldSizes list in the process.
|
|
//
|
|
extern void MergeSizes(jdouble * &oldSizes, int &oldLenMax, jdouble *newSizes);
|
|
|
|
//
|
|
// CopyString
|
|
//
|
|
// Make a copy of the input C-String and return a new C++ allocated
|
|
// C-String.
|
|
//
|
|
extern char *CopyString(const char *str);
|
|
|
|
//
|
|
// EscapeString
|
|
//
|
|
// Returns a newly allocated string that Escapes characters from escapeThese
|
|
// in the input str.
|
|
// For eg.
|
|
// input string : string-to*be-escaped\n
|
|
// return : string\-to\*be\-escaped\\n
|
|
//
|
|
// WARNING: Caller must delete the return string.
|
|
//
|
|
extern char *EscapeString(const char *str, const char *escapeThese);
|
|
|
|
//
|
|
// ScanToken
|
|
// Scans a token delimited by 'stopChars' from 'str' and copies it out
|
|
// into 'buf'
|
|
// By default this compresses multiple spaces in the token to a single space.
|
|
// If 'noSpacesOnOutput' is set, all spaces, leading/trailing/intermediate
|
|
// spaces are stripped.
|
|
//
|
|
// Returns a pointer to the character after the token in 'str'
|
|
//
|
|
extern const char *wf_scanToken(const char *str, char *buf, int len,
|
|
char *stopChars, int noSpacesOnOutput);
|
|
|
|
//
|
|
// wf_scanVariableAndValue
|
|
// Modifies buf such that variable and value point to the the LHS and RHS of
|
|
// a buf of the format " variable = value "
|
|
// Leading and trailing spaces for both variable and value are trimmed.
|
|
//
|
|
extern int wf_scanVariableAndValue(char *buf, int buflen,
|
|
char *&variable, char *&value);
|
|
|
|
|
|
/*
|
|
* wf_StringEndsWith
|
|
*
|
|
* returns nonzero if string 's' ends with string 'endstr'
|
|
* else returns zero
|
|
*/
|
|
extern int wf_stringEndsWith(const char *s, const char *endstr);
|
|
|
|
|
|
//
|
|
// wf_skipSpaces
|
|
// Returns a pointer to the first non-space character in 'str'
|
|
//
|
|
extern const char *wf_skipSpaces(const char *str);
|
|
|
|
|
|
//
|
|
// wf_trimSpaces
|
|
// Trims initial and trailing spaces from the input string.
|
|
//
|
|
char *wf_trimSpaces(char *inputString);
|
|
|
|
//
|
|
// Returns
|
|
// 0 : if both strings are the same on a case insensitive compare
|
|
// -1 : if any of the string were NULL
|
|
// 1 : if string 'two' is a case insensitive substring of string 'one'
|
|
// 2 : if string 'one' is a case insensitive substring of string 'two'
|
|
// 3 : if case insensitive compare failed
|
|
//
|
|
extern int wf_strcasecmp(const char *one, const char *two);
|
|
|
|
//
|
|
// Returns
|
|
// 0 : if both strings are the same on a case insensitive compare of atmost
|
|
// n bytes.
|
|
// -1 : if any of the string were NULL
|
|
extern int wf_strncasecmp(const char *one, const char *two, int n);
|
|
|
|
//
|
|
// returns a pointer to the extension part of the input string
|
|
extern const char *wf_getExtension(const char *fullname);
|
|
|
|
// =====================================================================
|
|
// Webfonts related miscellaneous routines
|
|
// =====================================================================
|
|
|
|
// Release an array of fmis. Will call nffmi::release() on each fmi.
|
|
//
|
|
// WARNING: WILL NOT RELEASE THE MEMORY FOR THE fmis array.
|
|
extern int wf_releaseFmis(struct nffmi **fmis);
|
|
|
|
//
|
|
// Adds a string to an existing string. If more memory is required, it extends
|
|
// the srcstring (realloc) to fit the new concatenated string.
|
|
//
|
|
#define WF_STRING_ALLOCATION_STEP 64
|
|
extern int wf_addToString(char **str, int *len, int *maxlen, const char *s);
|
|
|
|
|
|
// ------------------------------------------------------------
|
|
// FILE operations
|
|
// ------------------------------------------------------------
|
|
|
|
// All these return
|
|
// 0 : False
|
|
// +ve : True
|
|
// -1 : Error
|
|
extern int wf_isFileDirectory(const char *name);
|
|
extern int wf_isFileReadable(const char *filename);
|
|
|
|
//
|
|
// expandFileName:
|
|
//
|
|
// expands the following in the filename
|
|
// beginning ~ : HOME
|
|
//
|
|
// Returns the no: of expansions done. If none was done, returns 0.
|
|
// Returns -ve if there was no space to do the expansion.
|
|
//
|
|
extern int wf_expandFilename(char *filename, int maxlen);
|
|
|