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