:- import path_sysop/2, path_sysop/3 from file_io.
:- import datime/1 from standard.


:- object(system,
	implements(systemp)).


	:- info([
		version is 1.0,
		author is 'Paulo Moura',
		date is 2004/6/5,
		comment is 'Operating system interface for XSB.']).


	make_directory(Directory) :-
		{path_sysop(mkdir, Directory)}.


	delete_directory(Directory) :-
		{path_sysop(rmdir, Directory)}.


	change_directory(Directory) :-
		{path_sysop(chdir, Directory)}.


	working_directory(Directory) :-
		{path_sysop(cwd, Directory)}.


	directory_exists(Directory) :-
		{path_sysop(isdir, Directory)
		 path_sysop(exists, Directory)}.


	directory_files(Directory, Files) :-
		{directory(Directory, Files)}.


	absolute_file_name(File) :-
		{path_sysop(isabsolute, File)}.


	absolute_file_name(File, Full) :-
		{path_sysop(expand, File, Full)}.


	file_base_name(File, Base) :-
		{path_sysop(basename, File, Base)}.


	file_name_extension(File, Extension) :-
		{path_sysop(extension, File, Extension)}.


	file_name_directory(File, Directory) :-
		{path_sysop(dirname, File, Directory)}.


	file_exists(File) :-
		{path_sysop(isplain, File)
		 path_sysop(exists, File)}.


	file_modification_time(File, Time) :-
		{path_sysop(modtime, File, [High, Low]),
		 Time is Low + High * 2 ** 24}.


	file_size(File, Size) :-
		{path_sysop(size, File, Size)}.


	file_permission(File, read) :-
		{path_sysop(readable, File)}.

	file_permission(File, write) :-
		{path_sysop(writable, File)}.

	file_permission(File, execute) :-
		{path_sysop(executable, File)}.
 

	delete_file(File) :-
		{path_sysop(rm, Directory)}.


	rename_file(Old, New) :-
		{path_sysop(rename, Old, New)}.


	symbolic_link(File, Target) :-
		{fail}.


	environment_variable(Variable, Value) :-
		{fail}.


	set_environment_variable(Variable, Value) :-
		{fail}.


	date_time(Year, Month, Day, Hours, Mins, Secs, 0) :-
		{datime(datime(Year, Month, Day, Hours, Mins, Secs))}.


	convert_time(Time, Year, Month, Day, Hours, Mins, Secs) :-
		{fail}.


	cpu_time(Time) :-
		{cputime(Time)}.


	host_name(Name) :-
		{fail}.


:- end_object.