Add files via upload

This commit is contained in:
Isak 2018-02-17 21:16:51 +01:00 committed by GitHub
parent 44e2746659
commit 345c59c625
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 115 additions and 0 deletions

30
src/headers/Directory.h Normal file
View File

@ -0,0 +1,30 @@
#ifndef DIRECTORY_H
#define DIRECTORY_H
#include <string>
#include <dirent.h>
enum class Types
{
DIR,
FILE,
};
class Directory
{
private:
DIR *dir;
const std::string pathname_m;
dirent *ent;
public:
Directory(std::string pathname);
~Directory();
/* Class functions */
dirent* read();
std::string name();
Types type();
};
#endif

85
src/headers/Functions.h Normal file
View File

@ -0,0 +1,85 @@
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
#include <iostream>
#include <map>
#include <fstream>
#include <unistd.h>
#include "Directory.h"
struct info
{
const char *path;
const char *editor;
};
info
parse_command_line(int argc, char **argv)
{
info optinfo {NULL, NULL};
int opt;
while ((opt = getopt(argc, argv, "e:p:h")) != -1)
{
switch (opt) {
case 'e':
optinfo.editor = optarg;
break;
case 'p':
optinfo.path = optarg;
break;
case 'h':
std::cout << "A simple program for navigating directories and outputting files.\n";
std::cout << "Optional switches [-p PATH] [-e EDITOR]\n";
exit(1);
default:
exit(1);
}
}
return optinfo;
}
std::map<int, std::string> /* Returns a std::map, constructed like the following: <index, file_name>*/
display_directory_content()
{
Directory dir( get_current_dir_name() );
int count=1;
std::map<int, std::string> content_map;
std::cout << "* Viewing contents of " << get_current_dir_name() << " *\n\n";
while ((dir.read()) != NULL)
{
if (dir.type() == Types::DIR)
{
std::string dir_name = "/" + dir.name() + "/";
std::cout << "* " << count << ": " << dir_name << '\n'; /* Prepend directories with slash */
content_map.insert(std::pair<int, std::string>( count, dir_name ));
}
else if (dir.type() == Types::FILE)
{
std::cout << "* " << count << ": " << dir.name() << '\n';
content_map.insert(std::pair<int, std::string>( count, dir.name() ));
}
count++;
}
return content_map;
}
void
display_file_content(const std::string file_name) /* Displays the content of a file */
{
std::cout << "* Viewing contents of " << file_name << " *\n\n";
std::ifstream file(file_name);
if (file)
{
std::string line;
while (getline(file, line))
std::cout << line << "\n";
}
else std::cerr << "* Error viewing contents of " << file_name << " *\n";
}
#endif