/** * Converts node tree to a valid xml string. * * @return xml string */ public final Value asXML(Env env, @Optional Value filename) { Value value = toXML(env); if (!value.isString()) { return value; } StringValue str = value.toStringValue(env); if (filename.isDefault()) { return str; } else { Path path = env.lookupPwd(filename); OutputStream os = null; try { os = path.openWrite(); str.writeTo(os); return BooleanValue.TRUE; } catch (IOException e) { env.warning(e); return BooleanValue.FALSE; } finally { if (os != null) { IoUtil.close(os); } } } }
public static void writeDepend(Path dependPath, ArrayList<PersistentDependency> dependList) throws IOException { WriteStream os = dependPath.openWrite(); try { for (int i = 0; i < dependList.size(); i++) { PersistentDependency dependency = dependList.get(i); if (dependency instanceof Depend) { Depend depend = (Depend) dependency; os.print('"'); os.print(depend.getPath().getNativePath()); os.print("\" \""); os.print(depend.getDigest()); os.println("\""); } } } finally { os.close(); } }
private static void readMultipartStream( Env env, MultipartStream ms, ArrayValue postArray, ArrayValue files, boolean addSlashesToValues, boolean isAllowUploads) throws IOException { ReadStream is; while ((is = ms.openRead()) != null) { String attr = (String) ms.getAttribute("content-disposition"); if (attr == null || !attr.startsWith("form-data")) { // XXX: is this an error? continue; } String name = getAttribute(attr, "name", addSlashesToValues); String filename = getAttribute(attr, "filename", addSlashesToValues); if (filename != null) { int slashIndex = filename.lastIndexOf('/'); int slashIndex2 = filename.lastIndexOf('\\'); slashIndex = Math.max(slashIndex, slashIndex2); if (slashIndex >= 0) filename = filename.substring(slashIndex + 1); } int bracketIndex = -1; if (name != null) bracketIndex = name.lastIndexOf(']'); if (bracketIndex >= 0 && bracketIndex < name.length() - 1) { // php/085c } else if (filename == null) { StringValue value = env.createStringBuilder(); value.appendReadAll(is, Integer.MAX_VALUE); if (name != null) { addFormValue(env, postArray, name, value, null, addSlashesToValues); } else { env.warning(L.l("file upload is missing name and filename")); } } else { if (!isAllowUploads) { continue; } String tmpName = ""; long tmpLength = 0; // A POST file upload with an empty string as the filename does not // create a temp file in the upload directory. if (filename.length() > 0) { Path tmpPath = env.getUploadDirectory().createTempFile("php", ".tmp"); env.addRemovePath(tmpPath); WriteStream os = tmpPath.openWrite(); try { os.writeStream(is); } finally { os.close(); } tmpName = tmpPath.getFullPath(); tmpLength = tmpPath.getLength(); } // php/0865 // // A header like "Content-Type: image/gif" indicates the mime type // for an uploaded file. String mimeType = getAttribute(attr, "mime-type", addSlashesToValues); if (mimeType == null) { mimeType = (String) ms.getAttribute("content-type"); // php/085f if (mimeType != null && mimeType.endsWith(";")) mimeType = mimeType.substring(0, mimeType.length() - 1); } // php/0864 // // mime type is empty string when no file is uploaded. if (filename.length() == 0) { mimeType = ""; } long maxFileSize = Long.MAX_VALUE; Value maxFileSizeV = postArray.get(MAX_FILE_SIZE); if (!maxFileSizeV.isNull()) maxFileSize = maxFileSizeV.toLong(); if (name != null) { addFormFile( env, files, name, filename, tmpName, mimeType, tmpLength, addSlashesToValues, maxFileSize); } else { addFormFile( env, files, filename, tmpName, mimeType, tmpLength, addSlashesToValues, maxFileSize); } } } }
private void movePathToArchive(Path savedPath) { if (savedPath == null) return; synchronized (_logLock) { closeLogStream(); } Path path = getPath(); String savedName = savedPath.getTail(); try { if (!savedPath.getParent().isDirectory()) savedPath.getParent().mkdirs(); } catch (Exception e) { logWarning(L.l("Can't open archive directory {0}", savedPath.getParent()), e); } try { if (path.exists()) { WriteStream os = null; OutputStream out = null; // *.gz and *.zip are copied. Others are just renamed if (savedName.endsWith(".gz")) { os = savedPath.openWrite(); out = new GZIPOutputStream(os); } else if (savedName.endsWith(".zip")) { os = savedPath.openWrite(); ZipOutputStream zip = new ZipOutputStream(os); String entryName = savedName.substring(0, savedName.length() - 4); ZipEntry entry = new ZipEntry(entryName); zip.putNextEntry(entry); out = zip; } if (out != null) { try { path.writeToStream(out); } finally { try { out.close(); } catch (Exception e) { // can't log in log rotation routines } try { if (out != os) os.close(); } catch (Exception e) { // can't log in log rotation routines } } } else { path.renameTo(savedPath); } } } catch (Exception e) { logWarning(L.l("Error rotating logs: {0}", e.toString()), e); } try { path.remove(); /* try { if (! path.truncate()) path.remove(); } catch (IOException e) { path.remove(); throw e; } */ } catch (Exception e) { logWarning(L.l("Error truncating logs"), e); } if (_rolloverCount > 0) removeOldLogs(); }