@@ -61,7 +61,7 @@ extern crate threadpool;
6161use threadpool:: ThreadPool ;
6262use std:: sync:: mpsc:: channel;
6363use std:: process:: Command ;
64- use std:: fs:: File ;
64+ use std:: fs:: { File , ReadDir } ;
6565use std:: io:: Write ;
6666
6767fn get_read_file ( filename : & String ) -> File {
@@ -71,6 +71,13 @@ fn get_read_file(filename: &String) -> File {
7171 }
7272}
7373
74+ fn get_folder ( foldername : & String ) -> ReadDir {
75+ match std:: fs:: read_dir ( & foldername) {
76+ Ok ( dir) => dir,
77+ Err ( e) => { panic ! ( "Error opening {}: {}" , foldername, e. to_string( ) ) ; } ,
78+ }
79+ }
80+
7481fn get_write_file ( filename : & String ) -> File {
7582 match File :: create ( filename) {
7683 Ok ( file) => file,
@@ -79,24 +86,7 @@ fn get_write_file(filename: &String) -> File {
7986}
8087
8188fn check_folder ( path : & String ) -> Result < ( ) , String > {
82- let file = get_read_file ( path) ;
83- let metadata = match file. metadata ( ) {
84- Ok ( metadata) => metadata,
85- Err ( e) => {
86- let message = "Error getting " . to_string ( ) + path + ": " + & e. to_string ( ) ;
87- return Err ( message) ;
88- } ,
89- } ;
90- if !metadata. is_dir ( ) {
91- let message = path. clone ( ) + " is not a directory." ;
92- return Err ( message) ;
93- }
94-
95- if metadata. permissions ( ) . readonly ( ) {
96- let message = path. clone ( ) + "is readonly" ;
97- return Err ( message) ;
98- }
99-
89+ let file = get_folder ( path) ;
10090 Ok ( ( ) )
10191}
10292
@@ -126,12 +116,14 @@ fn main() {
126116 let gpfilename = & args[ 2 ] ;
127117 let tmpfoldername = {
128118 if args. len ( ) > 3 {
129- & args[ 3 ]
119+ args[ 3 ] . clone ( )
130120 } else {
131- "/tmp/"
121+ std:: env:: temp_dir ( )
122+ . into_os_string ( )
123+ . into_string ( )
124+ . unwrap ( )
132125 }
133126 } ;
134- let tmpfoldername = tmpfoldername. to_string ( ) ;
135127 match check_folder ( & tmpfoldername) {
136128 Err ( e) => { panic ! ( e) ; } ,
137129 _ => { } ,
0 commit comments