public CompiledConstStringValue(String s, LongValue longValue, DoubleValue doubleValue, ValueType valueType, Value key, int hashCode) : base(s) { setString(s); setLongValue(longValue); setDoubleValue(doubleValue); setValueType(valueType); setKey(key); setLowerCase(toLowerCase(Locale.ENGLISH)); _compiledHashCode = hashCode; }
/** * Converts to a key. */ public override Value toKey() { char [] buffer = _buffer; int len = _length; if (len == 0) { return(this); } int sign = 1; long value = 0; int i = 0; int ch = buffer[i]; if (ch == '-') { if (len == 1) { return(this); } sign = -1; i++; } for (; i < len; i++) { ch = buffer[i]; if ('0' <= ch && ch <= '9') { value = 10 * value + ch - '0'; } else { return(this); } } return(LongValue.create(sign * value)); }
/** * Adds to the following value. */ public override Value add(long lLong) { return(LongValue.create(lLong + _value)); }
/** * Post-increment the following value. */ public override Value increment(int incr) { long newValue = _value + incr; return(LongValue.create(newValue)); }
/** * Post-decrement the following value. */ public override Value postdecr() { long newValue = _value - 1; return(LongValue.create(newValue)); }
/** * Pre-increment the following value. */ public override Value preincr() { long newValue = _value + 1; return(LongValue.create(newValue)); }
/** * The previous integer */ public override Value subOne() { long newValue = _value - 1; return(LongValue.create(newValue)); }
public Map.Entry <Value, Value> next() { Value val = wrapJava(_iterator.next()); return(new ArrayValue.Entry(LongValue.create(_index++), val)); }
public static void addFormValue(Env env, ArrayValue array, string key, Value formValue, string [] formValueList, bool addSlashesToValues, bool isReplaceSpacesWithUnderscores) { int p = -1; int q = -1; if (key != null) { p = key.indexOf('['); q = key.indexOf(']', p); } if (p >= 0 && p < q) { if (p == 0) { // php/080e return; } int keyStart = 0; int keyEnd = p; while (p > 0 && p < q) { string currentKey = key.substring(keyStart, keyEnd); if (keyStart == 0) { // php/081p currentKey = currentKey.replace('.', '_'); } if (isReplaceSpacesWithUnderscores) { // php/080h currentKey = currentKey.replace(' ', '_'); // php/080k isReplaceSpacesWithUnderscores = false; } StringValue currentKeyValue = env.createString(currentKey); Value currentArray = array.get(currentKeyValue); if (!currentArray.isArray()) { currentArray = new ArrayValueImpl(); } if (currentKeyValue.length() == 0) { array.append(currentArray); } else { array.put(currentKeyValue, currentArray); } array = currentArray.toArrayValue(env); keyStart = p + 1; keyEnd = q; p = key.indexOf('[', q + 1); q = key.indexOf(']', p + 1); } if (keyEnd > 0) { key = key.substring(keyStart, keyEnd); } else { key = key.substring(keyStart); } if (isReplaceSpacesWithUnderscores) { // php/080h key = key.replace(' ', '_'); } if (key.length() == 0) { if (formValueList != null) { for (int i = 0; i < formValueList.length; i++) { Value value; if (formValueList[i] != null) { value = env.createString(formValueList[i]); } else { value = NullValue.NULL; } put(array, null, value, addSlashesToValues); } } else { array.put(formValue); } } else if ('0' <= key[0] && key[0] <= '9') { put(array, LongValue.create(StringValue.toLong(key)), formValue, addSlashesToValues); } else { put(array, env.createString(key), formValue, addSlashesToValues); } } else { if (key != null) { key = key.replace('.', '_'); if (isReplaceSpacesWithUnderscores) { // php/080h key = key.replace(' ', '_'); } put(array, env.createString(key), formValue, addSlashesToValues); } else { put(array, null, formValue, addSlashesToValues); } } }
private static void addFormFile(Env env, ArrayValue files, string name, string fileName, string tmpName, string mimeType, long fileLength, bool addSlashesToValues, long maxFileSize) { int p = name.indexOf('['); string index = ""; if (p >= 0) { index = name.substring(p); name = name.substring(0, p); } // php/085j name = name.replace("\u0000", ""); StringValue nameValue = env.createString(name); Value v = files.get(nameValue).toValue(); ArrayValue entry = null; if (v instanceof ArrayValue) { entry = (ArrayValue)v; } if (entry == null) { entry = new ArrayValueImpl(); files.put(nameValue, entry); } int error; // php/1667 long uploadMaxFilesize = env.getIniBytes("upload_max_filesize", 2 * 1024 * 1024); // php/085j fileName = fileName.replace("\u0000", ""); if (fileName.length() == 0) { // php/0864 error = FileModule.UPLOAD_ERR_NO_FILE; } else if (fileLength > uploadMaxFilesize) { error = FileModule.UPLOAD_ERR_INI_SIZE; } else if (fileLength > maxFileSize) { error = FileModule.UPLOAD_ERR_FORM_SIZE; } else { error = FileModule.UPLOAD_ERR_OK; } addFormValue(env, entry, "name" + index, env.createString(fileName), null, addSlashesToValues, true); long size; if (error == FileModule.UPLOAD_ERR_OK) { size = fileLength; } else { mimeType = ""; tmpName = ""; size = 0; } if (mimeType != null) { addFormValue(env, entry, "type" + index, env.createString(mimeType), null, addSlashesToValues, true); } addFormValue(env, entry, "tmp_name" + index, env.createString(tmpName), null, addSlashesToValues, true); addFormValue(env, entry, "error" + index, LongValue.create(error), null, addSlashesToValues, true); addFormValue(env, entry, "size" + index, LongValue.create(size), null, addSlashesToValues, true); addFormValue(env, files, name, entry, null, addSlashesToValues, true); }
private static void addFormFile(Env env, ArrayValue files, string fileName, string tmpName, string mimeType, long fileLength, bool addSlashesToValues, long maxFileSize) { ArrayValue entry = new ArrayValueImpl(); int error; // php/1667 long uploadMaxFilesize = env.getIniBytes("upload_max_filesize", 2 * 1024 * 1024); // php/085j fileName = fileName.replace("\u0000", ""); if (fileName.length() == 0) { // php/0864 error = FileModule.UPLOAD_ERR_NO_FILE; } else if (fileLength > uploadMaxFilesize) { error = FileModule.UPLOAD_ERR_INI_SIZE; } else if (fileLength > maxFileSize) { error = FileModule.UPLOAD_ERR_FORM_SIZE; } else { error = FileModule.UPLOAD_ERR_OK; } addFormValue(env, entry, "name", env.createString(fileName), null, addSlashesToValues, true); long size; if (error != FileModule.UPLOAD_ERR_INI_SIZE) { size = fileLength; } else { mimeType = ""; tmpName = ""; size = 0; } if (mimeType != null) { addFormValue(env, entry, "type", env.createString(mimeType), null, addSlashesToValues, true); entry.put("type", mimeType); } addFormValue(env, entry, "tmp_name", env.createString(tmpName), null, addSlashesToValues, true); addFormValue(env, entry, "error", LongValue.create(error), null, addSlashesToValues, true); addFormValue(env, entry, "size", LongValue.create(size), null, addSlashesToValues, true); addFormValue(env, files, null, entry, null, addSlashesToValues, true); }
void setPrev(LongValue prev) { _prev = prev; }
public LongCacheValue(long value, LongValue next) { super(value); _next = next; }
/** * Creatse a tail index. */ public override Value createTailKey() { return(LongValue.create(getSize())); }
public Value next() { _iterator.next(); return(LongValue.create(_index++)); }
/** * Subtracts the following value. */ public override Value sub(long rLong) { return(LongValue.create(_value - rLong)); }
protected void setLongValue(LongValue value) { _longValue = value; }
/* * public override Value toAutoArray() * { * if (_value == 0) * return new ArrayValueImpl(); * else * return super.toAutoArray(); * } */ /** * Negates the value. */ public override Value neg() { return(LongValue.create(-_value)); }
/** * The next integer */ public override Value addOne() { long newValue = _value + 1; return(LongValue.create(newValue)); }
/** * Fills the map. */ private void fillMap() { if (_isFilled) { return; } _isFilled = true; for (Map.Entry <Value, Value> entry : _env.getQuercus().getServerEnvMap().entrySet()) { super.put(entry.getKey(), entry.getValue()); } QuercusHttpServletRequest request = _env.getRequest(); bool isUnicode = _env.isUnicodeSemantics(); if (request != null) { super.put(isUnicode ? SERVER_ADDR_VU : SERVER_ADDR_V, _env.createString(request.getLocalAddr())); super.put(isUnicode ? SERVER_NAME_VU : SERVER_NAME_V, _env.createString(request.getServerName())); super.put(isUnicode ? SERVER_PORT_VU : SERVER_PORT_V, LongValue.create(request.getServerPort())); super.put(isUnicode ? REMOTE_HOST_VU : REMOTE_HOST_V, _env.createString(request.getRemoteHost())); super.put(isUnicode ? REMOTE_ADDR_VU : REMOTE_ADDR_V, _env.createString(request.getRemoteAddr())); super.put(isUnicode ? REMOTE_PORT_VU : REMOTE_PORT_V, LongValue.create(request.getRemotePort())); // Drupal's optional activemenu plugin only works on Apache servers! // bug at http://drupal.org/node/221867 super.put(isUnicode ? SERVER_SOFTWARE_VU : SERVER_SOFTWARE_V, _env.createString("Apache PHP Quercus(" + _env.getQuercus().getVersion() + ")")); super.put(isUnicode ? SERVER_PROTOCOL_VU : SERVER_PROTOCOL_V, _env.createString(request.getProtocol())); super.put(isUnicode ? REQUEST_METHOD_VU : REQUEST_METHOD_V, _env.createString(request.getMethod())); string queryString = QuercusRequestAdapter.getPageQueryString(request); string requestURI = QuercusRequestAdapter.getPageURI(request); string servletPath = QuercusRequestAdapter.getPageServletPath(request); string pathInfo = QuercusRequestAdapter.getPagePathInfo(request); string contextPath = QuercusRequestAdapter.getPageContextPath(request); if (queryString != null) { super.put(isUnicode ? QUERY_STRING_VU : QUERY_STRING_V, _env.createString(queryString)); } // XXX: a better way? // getRealPath() returns a native path // need to convert windows paths to resin paths string root = request.getRealPath("/"); if (root == null) { root = _env.getPwd().getFullPath(); } if (root.indexOf('\\') >= 0) { root = root.replace('\\', '/'); root = '/' + root; } super.put(isUnicode ? DOCUMENT_ROOT_VU : DOCUMENT_ROOT_V, _env.createString(root)); super.put(isUnicode ? SCRIPT_NAME_VU : SCRIPT_NAME_V, _env.createString(contextPath + servletPath)); super.put(isUnicode ? SCRIPT_URL_VU : SCRIPT_URL_V, _env.createString(requestURI)); if (queryString != null) { requestURI = requestURI + '?' + queryString; } super.put(isUnicode ? REQUEST_URI_VU : REQUEST_URI_V, _env.createString(requestURI)); super.put(isUnicode ? REQUEST_TIME_VU : REQUEST_TIME_V, LongValue.create(_env.getStartTime() / 1000)); super.put(isUnicode ? REQUEST_TIME_FLOAT_VU : REQUEST_TIME_FLOAT_V, DoubleValue.create(_env.getMicroTime() / 1000000.0)); super.put(isUnicode ? SCRIPT_FILENAME_VU : SCRIPT_FILENAME_V, _env.createString(request.getRealPath(servletPath))); if (pathInfo != null) { super.put(isUnicode ? PATH_INFO_VU : PATH_INFO_V, _env.createString(pathInfo)); super.put(isUnicode ? PATH_TRANSLATED_VU : PATH_TRANSLATED_V, _env.createString(request.getRealPath(pathInfo))); } if (request.isSecure()) { super.put(isUnicode ? HTTPS_VU : HTTPS_V, _env.createString("on")); // #5402 super.put(isUnicode ? HTTP_X_SSL_REQUEST_VU : HTTP_X_SSL_REQUEST_V, _env.createString("on")); } if (pathInfo == null) { super.put(isUnicode ? PHP_SELF_VU : PHP_SELF_V, _env.createString(contextPath + servletPath)); } else { super.put(isUnicode ? PHP_SELF_VU : PHP_SELF_V, _env.createString(contextPath + servletPath + pathInfo)); } // authType @is not set on Tomcat //String authType = request.getAuthType(); string authHeader = request.getHeader("Authorization"); if (authHeader != null) { if (authHeader.indexOf("Basic") == 0) { super.put(isUnicode ? AUTH_TYPE_VU : AUTH_TYPE_V, _env.createString("Basic")); bool userNameIsSet = false; if (request.getRemoteUser() != null) { super.put(isUnicode ? PHP_AUTH_USER_VU : PHP_AUTH_USER_V, _env.createString(request.getRemoteUser())); userNameIsSet = true; } string digest = authHeader.substring("Basic ".length()); string userPass = Base64.decode(digest); int i = userPass.indexOf(':'); if (i > 0) { if (!userNameIsSet) { super.put(isUnicode ? PHP_AUTH_USER_VU : PHP_AUTH_USER_V, _env.createString(userPass.substring(0, i))); } super.put(isUnicode ? PHP_AUTH_PW_VU : PHP_AUTH_PW_V, _env.createString(userPass.substring(i + 1))); } } else if (authHeader.indexOf("Digest") == 0) { super.put(isUnicode ? AUTH_TYPE_VU : AUTH_TYPE_V, _env.createString("Digest")); string digest = authHeader.substring("Digest ".length()); super.put(isUnicode ? PHP_AUTH_DIGEST_VU : PHP_AUTH_DIGEST_V, _env.createString(digest)); } } Enumeration e = request.getHeaderNames(); while (e.hasMoreElements()) { string key = (String)e.nextElement(); string value = request.getHeader(key); if (key.equalsIgnoreCase("Host")) { super.put(isUnicode ? HTTP_HOST_VU : HTTP_HOST_V, _env.createString(value)); } else if (key.equalsIgnoreCase("Content-Length")) { super.put(isUnicode ? CONTENT_LENGTH_VU : CONTENT_LENGTH_V, _env.createString(value)); } else if (key.equalsIgnoreCase("Content-Type")) { super.put(isUnicode ? CONTENT_TYPE_VU : CONTENT_TYPE_V, _env.createString(value)); } else { super.put(convertHttpKey(key), _env.createString(value)); } } } }