/* * Measure a header entry and all its children * * Short format: * " item->name\n" * " child1->address\n" * " child2->address\n" * where there are nIndent number of spaces before the item and * TEXT_INDENT spaces between levels * * Long format: * int16 type * item->name\n * int32 addition_date * int32 number of children * item->description\0 * * The item->description field is *NOT* \n terminated since it might * be a multi-line string and is therefore \0 terminated. Note that * the address field is *NOT* written for headers since its it meaningless */ PRIVATE int32 hot_measure_Header(HotlistStruct * item, int bLongFormat, int nIndent) { XP_List * list; int32 iSpace = 0; if(!item) return(0); if(bLongFormat) { /* type, addition_date, last_visit_date + # children + 2 \n's + 1 \0 */ iSpace += 2 + 4 + 4 + 2 + 1; if(item->description) iSpace += XP_STRLEN(item->description); } else { /* space indentation and '\n' terminator */ iSpace = 1 + nIndent; } /* the name appears in both formats */ if(item->name) iSpace += XP_STRLEN(item->name); /* if no children just return */ if(!item->children) return(iSpace); /* measure the amount of space taken up by this item's children */ for(list = item->children->next; list; list = list->next) { HotlistStruct * child = (HotlistStruct *) list->object; if(!child) continue; switch(child->type) { case HOT_URLType: iSpace += hot_measure_URL(child, bLongFormat, nIndent + TEXT_INDENT); break; case HOT_HeaderType: iSpace += hot_measure_Header(child, bLongFormat, nIndent + TEXT_INDENT); break; case HOT_SeparatorType: iSpace += hot_measure_Separator(child, bLongFormat, nIndent + TEXT_INDENT); break; default: break; } } return(iSpace); }
/* Again like strdup but it concatinates and free's and uses Realloc */ PUBLIC char * NET_SACat (char **destination, const char *source) { if (source && *source) { if (*destination) { int length = XP_STRLEN (*destination); *destination = (char *) XP_REALLOC (*destination, length + XP_STRLEN(source) + 1); if (*destination == NULL) return(NULL); XP_STRCPY (*destination + length, source); } else { *destination = (char *) XP_ALLOC (XP_STRLEN(source) + 1); if (*destination == NULL) return(NULL); XP_STRCPY (*destination, source); } } return *destination; }
/* * Measure a boring URL hotlist entry and return the length in bytes * * Short format: * " item->address\n" * where there are nIndent number of spaces before the item * * Long format: * int16 type * item->name\n * item->address\n * int32 addition_date * int32 last_visit_date * item->description\0 * * The item->description field is *NOT* \n terminated since it might * be a multi-line string and is therefore \0 terminated */ PRIVATE int32 hot_measure_URL(HotlistStruct * item, int bLongFormat, int nIndent) { int32 iSpace = 0; if(!item) return(0); if(bLongFormat) { /* type, addition_date, last_visit_date + 2 \n's + 1 \0 */ iSpace += 2 + 4 + 4 + 2 + 1; if(item->name) iSpace += XP_STRLEN(item->name); if(item->description) iSpace += XP_STRLEN(item->description); } else { /* space indentation and '\n' terminator */ iSpace = 1 + nIndent; } /* the address appears in both formats */ if(item->address) iSpace += XP_STRLEN(item->address); return(iSpace); }
void XFE_AddrBookView::abVCard() { // Need to check if the user has created a card XFE_GlobalPrefs *prefs = &fe_globalPrefs; PersonEntry person; ABook *addr_book = fe_GetABook(0); DIR_Server *dir; ABID entry_id; person.Initialize(); person.pGivenName = ((prefs->real_name) && (XP_STRLEN(prefs->real_name) > 0)) ? XP_STRDUP(prefs->real_name) : 0; person.pEmailAddress = ((prefs->email_address) && (XP_STRLEN(prefs->email_address) > 0)) ? XP_STRDUP(prefs->email_address) : 0; DIR_GetPersonalAddressBook(m_directories, &dir); if (dir) { AB_GetEntryIDForPerson(dir, addr_book, &entry_id, &person); fe_showABCardPropertyDlg(getToplevel()->getBaseWidget(), m_contextData, entry_id, (MSG_MESSAGEIDNONE != entry_id)?FALSE:TRUE); } person.CleanUp(); }
PRIVATE int net_proxy_write (NET_StreamClass *stream, CONST char* s, int32 len) { ProxyObj *obj=stream->data_object; /* send HTTP headers if not already getting an HTTP doc */ if(!obj->past_first_line) { if(obj->definately_send_headers || strncmp(s, "HTTP/", len >= 5 ? 5 : len)) { write(1, "HTTP/1.0 200 OK\r\n",17); write(1, "Content-type: ",14); write(1, obj->content_type, XP_STRLEN(obj->content_type)); if(obj->content_encoding) { write(1, "\r\nContent-encoding: ",18); write(1, obj->content_encoding, XP_STRLEN(obj->content_encoding)); } write(1, "\r\nServer: MKLib proxy agent\r\n",29); write(1, "\r\n", 2); /* finish it */ } obj->past_first_line = TRUE; } write(1, s, len); return(1); }
char* vr_findVerRegName () { if ( verRegName != NULL ) return verRegName; #ifndef STANDALONE_REGISTRY { char *def = NULL; char *home = getenv("HOME"); if (home != NULL) { def = (char *) XP_ALLOC(XP_STRLEN(home) + XP_STRLEN(DEF_VERREG)+1); if (def != NULL) { XP_STRCPY(def, home); XP_STRCAT(def, DEF_VERREG); } } if (def != NULL) { verRegName = XP_STRDUP(def); } XP_FREEIF(def); } #else verRegName = XP_STRDUP(TheRegistry); #endif /*STANDALONE_REGISTRY*/ return verRegName; }
char* vr_findVerRegName () { if ( verRegName != NULL ) return verRegName; #ifndef STANDALONE_REGISTRY { char *def = NULL; char settings[1024]; find_directory(B_USER_SETTINGS_DIRECTORY, -1, false, settings, sizeof(settings)); if (settings != NULL) { def = (char *) XP_ALLOC(XP_STRLEN(settings) + XP_STRLEN(BEOS_VERREG)+1); if (def != NULL) { XP_STRCPY(def, settings); XP_STRCAT(def, BEOS_VERREG); } } if (def != NULL) { verRegName = XP_STRDUP(def); } XP_FREEIF(def); } #else verRegName = XP_STRDUP(TheRegistry); #endif /*STANDALONE_REGISTRY*/ return verRegName; }
static void fe_movemail_perror(MWContext *context, const char *message) { int e = errno; char *es = 0; char *buf1 = 0; char buf2[512]; char *suffix; int L; XP_ASSERT(context); if (!context) return; if ((unsigned)e < (unsigned)sys_nerr) { es = sys_errlist [e]; } else { PR_snprintf (buf2, sizeof (buf2), XP_GetString( XFE_UNKNOWN_ERROR_CODE ), errno); es = buf2; } suffix = XP_GetString(XFE_MOVEMAIL_FAILURE_SUFFIX); if(!suffix) suffix = ""; if(!message) message = ""; L = XP_STRLEN(message) + XP_STRLEN(es) + XP_STRLEN(suffix) + 40; buf1 = (char *) XP_ALLOC(L); if(!buf1) return; PR_snprintf (buf1, L-1, "%s\n%s\n\n%s", message, es, suffix); FE_Alert (context, buf1); XP_FREE(buf1); }
char *XP_Cat(char *a0, ...) { va_list ap; char *a, *result, *cp; int len; /* Count up string length's */ va_start(ap, a0); len = 1; a = a0; while (a != (char*) NULL) { len += XP_STRLEN(a); a = va_arg(ap, char*); } va_end(ap); /* Allocate memory and copy strings */ va_start(ap, a0); result = cp = (char*) XP_ALLOC(len); if (!cp) return 0; a = a0; while (a != (char*) NULL) { len = XP_STRLEN(a); XP_MEMCPY(cp, a, len); cp += len; a = va_arg(ap, char*); } *cp = 0; va_end(ap); return result; }
/** * Replaces all '/' with '_',in the given string.If an '_' already exists in the * given string, it is escaped by adding another '_' to it. */ static REGERR vr_convertPackageName(char *regPackageName, char *convertedPackageName, uint32 convertedDataLength) { uint32 length = 0; uint32 i; uint32 j = 0; length = XP_STRLEN(regPackageName); if (convertedDataLength <= length) return REGERR_BUFTOOSMALL; for (i=0, j=0; i<length; i++, j++) { if (j < (convertedDataLength-1)) { convertedPackageName[j] = regPackageName[i]; } else { return REGERR_BUFTOOSMALL; } if (regPackageName[i] == '_') { if ((j+1) < (convertedDataLength-1)) { convertedPackageName[j+1] = '_'; } else { return REGERR_BUFTOOSMALL; } j = j + 1; } } if (convertedPackageName[j-1] == '/') convertedPackageName[j-1] = '\0'; else { if (j < convertedDataLength) { convertedPackageName[j] = '\0'; } else { return REGERR_BUFTOOSMALL; } } length = 0; length = XP_STRLEN(convertedPackageName); for (i=1; i<length; i++) { if (convertedPackageName[i] == '/') convertedPackageName[i] = '_'; } return REGERR_OK; }
VR_INTERFACE(REGERR) VR_UninstallDeleteSharedFilesKey(char *component_path) { REGERR err; char *regbuf; char *converted_component_path; uint32 convertedDataLength = 0; uint32 regbuflen = 0; uint32 curregbuflen = 0; uint32 len = 0; err = vr_Init(); if (err != REGERR_OK) return err; if ( component_path == NULL ) err = REGERR_PARAM; convertedDataLength = 2 * XP_STRLEN(component_path) + 1; converted_component_path = (char*)XP_ALLOC(convertedDataLength); if (converted_component_path == NULL ) { err = REGERR_MEMORY; return err; } err = vr_convertPackageName(component_path, converted_component_path, convertedDataLength); if (err != REGERR_OK) { XP_FREEIF(converted_component_path); return err; } regbuflen = 256 + XP_STRLEN(converted_component_path); regbuf = (char*)XP_ALLOC( regbuflen ); if (regbuf != NULL ) { err = vr_GetUninstallItemPath(converted_component_path, regbuf, regbuflen); if (err == REGERR_OK) { curregbuflen = XP_STRLEN(regbuf); len = XP_STRLEN(SHAREDFILESSTR); if (len < (regbuflen - curregbuflen)) { XP_STRCAT(regbuf, SHAREDFILESSTR); err = NR_RegDeleteKey( vreg, ROOTKEY_PRIVATE, regbuf ); } else err = REGERR_BUFTOOSMALL; } XP_FREE(regbuf); } else { err = REGERR_MEMORY; } XP_FREE(converted_component_path); return err; } /* UninstallDeleteSharedFilesKey */
/* * The beginning of a usemap MAP record. * Allocate the structure and initialize it. It will be filled * by later AREA tags. */ void lo_BeginMap(MWContext *context, lo_DocState *state, PA_Tag *tag) { PA_Block buff; char *str; lo_MapRec *map; map = XP_NEW(lo_MapRec); if (map == NULL) { state->top_state->out_of_memory = TRUE; return; } map->name = NULL; map->areas = NULL; map->areas_last = NULL; map->next = NULL; buff = lo_FetchParamValue(context, tag, PARAM_NAME); if (buff != NULL) { char *name; PA_LOCK(str, char *, buff); if (str != NULL) { int32 len; len = lo_StripTextWhitespace(str, XP_STRLEN(str)); } name = (char *)XP_ALLOC(XP_STRLEN(str) + 1); if (name == NULL) { map->name = NULL; } else { XP_STRCPY(name, str); map->name = name; } PA_UNLOCK(buff); PA_FREE(buff); } else { map->name = NULL; } if (map->name == NULL) { XP_DELETE(map); return; } state->top_state->current_map = map; }
int XFE_ABDirListView::ProcessTargets(int row, int col, Atom *targets, const char **data, int numItems) { int i; D(("XFE_ABDirListView::ProcessTargets(row=%d, col=%d, numItems=%d)\n", row, col, numItems)); for (i=0; i < numItems; i++) { if (targets[i]==None || data[i]==NULL || strlen(data[i])==0) continue; D((" [%d] %s: \"%s\"\n",i,XmGetAtomName(XtDisplay(m_widget),targets[i]),data[i])); if (targets[i] == XFE_OutlinerDrop::_XA_NETSCAPE_DIRSERV) { #if defined(DEBUG_tao) printf("\nXFE_ABDirListView::ProcessTargets:_XA_NETSCAPE_DIRSERV\n"); #endif /* decode */ char *pStr = (char *) XP_STRDUP(data[i]); int len = XP_STRLEN(pStr); uint32 pCount = 0; char tmp[32]; sscanf(data[i], "%d", &pCount); int *indices = (int *) XP_CALLOC(pCount, sizeof(int)); char *tok = 0, *last = 0; int count = 0; char *sep = " "; while (((tok=XP_STRTOK_R(count?nil:pStr, sep, &last)) != NULL)&& XP_STRLEN(tok) && count < len) { int index = atoi(tok); if (!count) XP_ASSERT(index == pCount); else indices[count-1] = index; count++; }/* while */ return TRUE; }/* if */ else if (targets[i] == XFE_OutlinerDrop::_XA_NETSCAPE_PAB) { D((" [%d] %s: \"%s\"\n",i,XmGetAtomName(XtDisplay(m_widget),targets[i]),data[i])); #if defined(DEBUG_tao) printf("\nXFE_ABDirListView::ProcessTargets:_XA_NETSCAPE_PAB\n"); #endif return TRUE; }/* elss if */ }/* for i */ return FALSE; }
char * XP_PlatformFileToURL (const char *name) { char *prefix = "file://"; char *retVal = XP_ALLOC (XP_STRLEN(name) + XP_STRLEN(prefix) + 1); if (retVal) { XP_STRCPY (retVal, "file://"); XP_STRCAT (retVal, name); } return retVal; }
extern "C" void fe_showConference(Widget w, char *email, short use, char *coolAddr) { // Assume that conference is located at the same directory as netscape XP_ASSERT(w); char execu[32]; XP_STRCPY(execu, fe_conference_path); #if defined(IRIX) pid_t mypid = fork(); #else pid_t mypid = vfork(); #endif if (mypid == 0) { close (ConnectionNumber(XtDisplay(w))); /* sports * int execlp (const char *file, const char *arg0, ..., * int execvp (const char *file, char *const *argv); * const char *argn, (char *)0); */ if (email && XP_STRLEN(email)) { if (use == kDefaultDLS || !coolAddr || XP_STRLEN(coolAddr) == 0) { execlp(execu, execu, "-invite", email, 0); }/* if */ else if (use == kSpecificDLS && coolAddr && XP_STRLEN(coolAddr)) { execlp(execu, execu, "-invite", email, "-server", coolAddr, 0); }/* else */ else if (use == kHostOrIPAddress && coolAddr && XP_STRLEN(coolAddr)) { execlp(execu, execu, "-invite", email, "-direct", coolAddr, 0); }/* else */ }/* if */ else /* insufficient info to run */ execlp(execu, execu, 0); _exit(0); }/* if */ }/* fe_showConference() */
/* * used for ARCHIVE= and SRC= * Create name of form "archive.jar/src.js" */ static char * lo_BuildJSArchiveURL( char *archive_name, char *filename ) { uint32 len = XP_STRLEN(archive_name) + XP_STRLEN(filename) + 2; char *path = XP_ALLOC(len); if (path) { XP_STRCPY(path, archive_name); XP_STRCAT(path, "/"); XP_STRCAT(path, filename); } return path; }
static XP_S16 findStartsWithChars( DictIter* iter, const XP_UCHAR* chars, XP_U16 charsOffset, array_edge* edge, XP_U16 nTilesUsed ) { XP_S16 result = -1; XP_U16 charsLen = XP_STRLEN( &chars[charsOffset] ); if ( NULL == edge ) { if ( 0 == charsLen ) { iter->nEdges = nTilesUsed; result = charsOffset; } } else if ( 0 == charsLen ) { iter->nEdges = nTilesUsed; result = charsOffset; } else { const DictionaryCtxt* dict = iter->dict; XP_U16 nodeSize = dict->nodeSize; for ( ; ; ) { /* for all the tiles */ Tile tile = EDGETILE( dict, edge ); const XP_UCHAR* facep = NULL; for ( ; ; ) { /* for each string that tile can be */ facep = dict_getNextTileString( dict, tile, facep ); if ( NULL == facep ) { break; } XP_U16 faceLen = XP_STRLEN( facep ); if ( faceLen > charsLen ) { faceLen = charsLen; } if ( 0 == XP_STRNCMP( facep, &chars[charsOffset], faceLen ) ) { XP_S16 newOffset = findStartsWithChars( iter, chars, charsOffset + faceLen, dict_follow( dict, edge ), nTilesUsed + 1 ); if ( result < newOffset ) { iter->edges[nTilesUsed] = edge; result = newOffset; } break; } } if ( IS_LAST_EDGE( dict, edge ) ) { break; } edge += nodeSize; } } return result; }
extern XP_Bool XP_FileNameContainsBadChars (const char *name) { #ifdef XP_MAC char *badChars = ":"; #else /*XP_UNIX*/ char *badChars = "/"; #endif int i, j; for (i = 0; i < XP_STRLEN(name); i++) for (j = 0; j < XP_STRLEN(badChars); j++) if (name[i] == badChars[j]) return TRUE; return FALSE; }
VR_INTERFACE(REGERR) VR_UninstallFileExistsInList(char *regPackageName, char *vrName) { REGERR err; RKEY key = 0; char *regbuf; char sharedfilesstr[MAXREGNAMELEN]; uint32 regbuflen = 0; uint32 curregbuflen = 0; uint32 len = 0; err = vr_Init(); if (err != REGERR_OK) return err; if ( regPackageName == NULL ) err = REGERR_PARAM; if ( vrName == NULL ) err = REGERR_PARAM; regbuflen = 256 + XP_STRLEN(regPackageName); regbuf = (char*)XP_ALLOC( regbuflen ); if (regbuf != NULL ) { err = vr_GetUninstallItemPath(regPackageName, regbuf, regbuflen); if (err == REGERR_OK) { curregbuflen = XP_STRLEN(regbuf); len = XP_STRLEN(SHAREDFILESSTR); if (len < (regbuflen - curregbuflen)) { XP_STRCAT(regbuf, SHAREDFILESSTR); err = NR_RegGetKey( vreg, ROOTKEY_PRIVATE, regbuf, &key ); } else err = REGERR_BUFTOOSMALL; } XP_FREEIF(regbuf); } else { err = REGERR_MEMORY; } if (err == REGERR_OK) err = NR_RegGetEntryString( vreg, key, vrName, sharedfilesstr, sizeof(sharedfilesstr) ); return err; } /* UninstallFileExistsInList */
void FE_Trace (const char* buffer) { #if defined(DEBUG_warren) int len = XP_STRLEN(buffer); /* vsprintf does not return length */ fwrite(buffer, 1, len, real_stderr); #endif }
nsWinRegValue* nsWinReg::nativeGetValue(char* subkey, char* valname) { #if defined (WIN32) || defined (XP_OS2) unsigned char valbuf[STRBUFLEN]; HKEY root; HKEY newkey; LONG result; DWORD length=STRBUFLEN; DWORD type; char* data; nsWinRegValue* value = NULL; root = (HKEY) rootkey; result = RegOpenKeyEx( root, subkey, 0, KEY_ALL_ACCESS, &newkey ); if ( ERROR_SUCCESS == result ) { result = RegQueryValueEx( newkey, valname, NULL, &type, valbuf, &length ); if ( ERROR_SUCCESS == result ) { data = XP_STRDUP((char*)valbuf); length = XP_STRLEN(data); value = new nsWinRegValue(type, (void*)data, length); } RegCloseKey( newkey ); } return value; #else return NULL; #endif }
void CBigIcon::CenterText(CClientDC &dc, LPCSTR lpszStatus, int top) { int nMargin; CRect rect; TEXTMETRIC tm; // Leave a horizontal margin equal to the widest character VERIFY(dc.GetTextMetrics(&tm)); nMargin = tm.tmMaxCharWidth; // Compute the opaque rect rect.left = nMargin; rect.right = m_sizeBitmap.cx - nMargin; rect.top = top; rect.bottom = rect.top + tm.tmHeight; // We need to compute where to draw the text so it is centered // horizontally int x = rect.left; CSize extent = CIntlWin::GetTextExtent(0, dc.m_hDC, lpszStatus, XP_STRLEN(lpszStatus)); if (extent.cx < rect.Width()) x += (rect.Width() - extent.cx) / 2; // Draw opaquely so we can avoid erasing the old text dc.ExtTextOut(x, rect.top, ETO_OPAQUE, &rect, lpszStatus, strlen(lpszStatus), NULL); }
char * xp_FilePlatformName(const char * name, char* path) { if ((name == NULL) || (XP_STRLEN(name) > 1000)) return NULL; XP_STRCPY(path, name); return path; }
VR_INTERFACE(REGERR) VR_GetUninstallUserName(char *regPackageName, char *outbuf, uint32 buflen) { REGERR err; RKEY key = 0; char *regbuf = NULL; char *convertedName = NULL; uint32 convertedDataLength = 0; uint32 regbuflen = 0; err = vr_Init(); if (err != REGERR_OK) return err; if ( regPackageName == NULL || *regPackageName == '\0' || outbuf == NULL ) return REGERR_PARAM; convertedDataLength = 2 * XP_STRLEN(regPackageName) + 1; convertedName = (char*)XP_ALLOC(convertedDataLength); if (convertedName == NULL ) { err = REGERR_MEMORY; return err; } err = vr_convertPackageName(regPackageName, convertedName, convertedDataLength); if (err != REGERR_OK) { XP_FREE(convertedName); return err; } regbuflen = 256 + XP_STRLEN(convertedName); regbuf = (char*)XP_ALLOC( regbuflen ); if (regbuf == NULL ) { err = REGERR_MEMORY; } else { err = vr_GetUninstallItemPath(convertedName, regbuf, regbuflen); if (err == REGERR_OK) { err = NR_RegGetKey( vreg, ROOTKEY_PRIVATE, regbuf, &key ); } XP_FREE(regbuf); } if (err == REGERR_OK) err = NR_RegGetEntryString( vreg, key, PACKAGENAMESTR, outbuf, buflen ); XP_FREE(convertedName); return err; } /* GetUninstallName */
NET_StreamClass * OLE_ViewStream(int format_out, void *pDataObj, URL_Struct *urls, MWContext *pContext) { NET_StreamClass *stream = nil, *viewstream; char *org_content_type; if (!(stream = XP_NEW_ZAP(NET_StreamClass))) { XP_TRACE(("OLE_ViewStream memory lossage")); return 0; } stream->name = "ole viewer"; stream->complete = ole_view_complete; stream->abort = ole_view_abort; stream->is_write_ready = ole_view_write_ready; stream->data_object = NULL; stream->window_id = pContext; stream->put_block = (MKStreamWriteFunc)ole_view_write; org_content_type = urls->content_type; urls->content_type = 0; StrAllocCopy(urls->content_type, TEXT_HTML); urls->is_binary = 1; /* secret flag for mail-to save as */ if((viewstream=NET_StreamBuilder(format_out, urls, pContext)) != 0) { char *buffer = (char*) XP_ALLOC(XP_STRLEN(fakehtml) + XP_STRLEN(urls->address) + 1); if (buffer) { XP_SPRINTF(buffer, fakehtml, urls->address); (*viewstream->put_block)(viewstream, buffer, XP_STRLEN(buffer)); (*viewstream->complete)(viewstream); XP_FREE(buffer); } } /* XXX hack alert - this has to be set back for abort to work correctly */ XP_FREE(urls->content_type); urls->content_type = org_content_type; return stream; }
component_mozilla_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) { char *name, *type_str, *set_str, *prop_val; jsval type, func; if (!JSVAL_IS_STRING(id)) return JS_TRUE; name = JS_GetStringBytes(JSVAL_TO_STRING(id)); type_str = JS_malloc(cx, XP_STRLEN(lm_typePrefix_str) + XP_STRLEN(name) + 1); set_str = JS_malloc(cx, XP_STRLEN(lm_setPrefix_str) + XP_STRLEN(name) + 1); if (!type_str || !set_str) return JS_TRUE; XP_STRCPY(type_str, lm_typePrefix_str); XP_STRCAT(type_str, name); XP_STRCPY(set_str, lm_setPrefix_str); XP_STRCAT(set_str, name); if (!JS_GetProperty(cx, obj, type_str, &type) || !JSVAL_IS_INT(type) || !JS_GetProperty(cx, obj, set_str, &func)) return JS_TRUE; JS_free(cx, type_str); JS_free(cx, set_str); switch(JSVAL_TO_INT(type)) { case ARGTYPE_INT32: if (JSVAL_IS_INT(*vp)) ET_moz_CompSetterFunction((ETCompPropSetterFunc)JSVAL_TO_INT(func), name, (void*)JSVAL_TO_INT(*vp)); break; case ARGTYPE_BOOL: if (JSVAL_IS_BOOLEAN(*vp)) ET_moz_CompSetterFunction((ETCompPropSetterFunc)JSVAL_TO_INT(func), name, (void*)JSVAL_TO_BOOLEAN(*vp)); break; case ARGTYPE_STRING: if (JSVAL_IS_STRING(*vp)) { prop_val = JS_GetStringBytes(JSVAL_TO_STRING(*vp)); ET_moz_CompSetterFunction((ETCompPropSetterFunc)JSVAL_TO_INT(func), name, (void*)prop_val); } break; } return JS_TRUE; }
/* * Make all the directories specified in the path */ int XP_MakeDirectoryR(const char* name, XP_FileType type) { char separator; int result = 0; char * finalName; #if defined(XP_WIN) || defined(XP_OS2) separator = '\\'; #elif defined XP_UNIX separator = '/'; #endif finalName = WH_FileName(name, type); if ( finalName ) { char * dirPath; char * currentEnd; int err = 0; XP_StatStruct s; dirPath = XP_STRDUP( finalName ); if (dirPath == NULL) return -1; currentEnd = XP_STRCHR(dirPath, separator); /* Loop through every part of the directory path */ while (currentEnd != 0) { char savedChar; savedChar = currentEnd[1]; currentEnd[1] = 0; if ( XP_Stat(dirPath, &s, xpURL ) != 0) err = XP_MakeDirectory(dirPath, xpURL); if ( err != 0) { XP_ASSERT( FALSE ); /* Could not create the directory? */ break; } currentEnd[1] = savedChar; currentEnd = XP_STRCHR( ¤tEnd[1], separator); } if ( err == 0 ) /* If the path is not terminated with / */ { if ( dirPath[XP_STRLEN( dirPath) - 1] != separator ) if ( XP_Stat(dirPath, &s, xpURL ) != 0) err = XP_MakeDirectory(dirPath, xpURL); } if ( 0 != err ) result = err; if ( dirPath ) XP_FREE( dirPath ); } else result = -1; if ( finalName ) XP_FREE( finalName ); XP_ASSERT( result == 0 ); /* For debugging only */ return result; }
static REGERR vr_SetPathname(HREG reg, RKEY key, char *entry, char *dir) { REGERR err; int32 datalen = XP_STRLEN(dir)+1; /* include '\0' */ err = NR_RegSetEntry( reg, key, entry, REGTYPE_ENTRY_FILE, dir, datalen); return err; }
void IStreamOut::WriteZString(char* pString){ if( pString ){ int32 iLen = XP_STRLEN( pString )+1; WriteInt( iLen ); Write( pString, iLen ); } else { WriteInt(0); } }
component_mozilla_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) { char *name, *type_str, *get_str; jsval type, func; if (!JSVAL_IS_STRING(id)) return JS_TRUE; name = JS_GetStringBytes(JSVAL_TO_STRING(id)); type_str = JS_malloc(cx, XP_STRLEN(lm_typePrefix_str) + XP_STRLEN(name) + 1); get_str = JS_malloc(cx, XP_STRLEN(lm_getPrefix_str) + XP_STRLEN(name) + 1); if (!type_str || !get_str) return JS_TRUE; XP_STRCPY(type_str, lm_typePrefix_str); XP_STRCAT(type_str, name); XP_STRCPY(get_str, lm_getPrefix_str); XP_STRCAT(get_str, name); if (!JS_GetProperty(cx, obj, type_str, &type) || !JSVAL_IS_INT(type) || !JS_GetProperty(cx, obj, get_str, &func)) return JS_TRUE; JS_free(cx, type_str); JS_free(cx, get_str); switch(JSVAL_TO_INT(type)) { case ARGTYPE_INT32: *vp = INT_TO_JSVAL((int32)ET_moz_CompGetterFunction((ETCompPropGetterFunc)JSVAL_TO_INT(func), name)); break; case ARGTYPE_BOOL: *vp = BOOLEAN_TO_JSVAL((JSBool)ET_moz_CompGetterFunction((ETCompPropGetterFunc)JSVAL_TO_INT(func), name)); break; case ARGTYPE_STRING: *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, (char*)ET_moz_CompGetterFunction((ETCompPropGetterFunc)JSVAL_TO_INT(func), name))); break; } return JS_TRUE; }