1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.tomcat.jni; 19 20 /** Directory 21 * 22 * @author Mladen Turk 23 */ 24 public class Directory { 25 26 /** 27 * Create a new directory on the file system. 28 * @param path the path for the directory to be created. (use / on all systems) 29 * @param perm Permissions for the new directory. 30 * @param pool the pool to use. 31 * @return the operation result 32 */ make(String path, int perm, long pool)33 public static native int make(String path, int perm, long pool); 34 35 /** 36 * Creates a new directory on the file system, but behaves like 37 * 'mkdir -p'. Creates intermediate directories as required. No error 38 * will be reported if PATH already exists. 39 * @param path the path for the directory to be created. (use / on all systems) 40 * @param perm Permissions for the new directory. 41 * @param pool the pool to use. 42 * @return the operation result 43 */ makeRecursive(String path, int perm, long pool)44 public static native int makeRecursive(String path, int perm, long pool); 45 46 /** 47 * Remove directory from the file system. 48 * @param path the path for the directory to be removed. (use / on all systems) 49 * @param pool the pool to use. 50 * @return the operation result 51 */ remove(String path, long pool)52 public static native int remove(String path, long pool); 53 54 /** 55 * Find an existing directory suitable as a temporary storage location. 56 * @param pool The pool to use for any necessary allocations. 57 * @return The temp directory. 58 * 59 * This function uses an algorithm to search for a directory that an 60 * an application can use for temporary storage. Once such a 61 * directory is found, that location is cached by the library. Thus, 62 * callers only pay the cost of this algorithm once if that one time 63 * is successful. 64 */ tempGet(long pool)65 public static native String tempGet(long pool); 66 67 /** 68 * Open the specified directory. 69 * @param dirname The full path to the directory (use / on all systems) 70 * @param pool The pool to use. 71 * @return The opened directory descriptor. 72 * @throws Error An error occurred 73 */ open(String dirname, long pool)74 public static native long open(String dirname, long pool) 75 throws Error; 76 77 /** 78 * close the specified directory. 79 * @param thedir the directory descriptor to close. 80 * @return the operation result 81 */ close(long thedir)82 public static native int close(long thedir); 83 84 /** 85 * Rewind the directory to the first entry. 86 * @param thedir the directory descriptor to rewind. 87 * @return the operation result 88 */ rewind(long thedir)89 public static native int rewind(long thedir); 90 91 92 /** 93 * Read the next entry from the specified directory. 94 * @param finfo the file info structure and filled in by apr_dir_read 95 * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ values 96 * @param thedir the directory descriptor returned from apr_dir_open 97 * No ordering is guaranteed for the entries read. 98 * @return the operation result 99 */ read(FileInfo finfo, int wanted, long thedir)100 public static native int read(FileInfo finfo, int wanted, long thedir); 101 102 } 103