gitignore for build artifacts and executables

This commit is contained in:
Ben Harris 2016-10-25 02:05:37 -04:00
parent 1899658f3e
commit 36783854f4
8 changed files with 181 additions and 177 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
dc
dc2
dc.o
dc2.o

View File

@ -1,19 +1,19 @@
# Dircount assignment
## CS426
1 - prints every full pathname
1 - prints a [f] or a [d] next to the path depending on type
1 - counts the total number of files
1 - counts the total number of directories
1 - Never count the same file twice, even if there are links.
1 - does not go into an infinite loop even if the diretcory structure has loops
1 - prints the total on disk space used. (NOT the sum of all the file sizes)
-1 - Each day after Wed Oct 26th.
# Dircount assignment
## CS426
1 - prints every full pathname
1 - prints a [f] or a [d] next to the path depending on type
1 - counts the total number of files
1 - counts the total number of directories
1 - Never count the same file twice, even if there are links.
1 - does not go into an infinite loop even if the diretcory structure has loops
1 - prints the total on disk space used. (NOT the sum of all the file sizes)
-1 - Each day after Wed Oct 26th.

BIN
dc

Binary file not shown.

BIN
dc.o

Binary file not shown.

BIN
dc2

Binary file not shown.

BIN
dc2.o

Binary file not shown.

View File

@ -1,76 +1,76 @@
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
#include <stdio.h>
#include <sys/stat.h>
#include <unordered_map>
using namespace std;
class Hashtable {
unordered_map<ino_t, bool> htmap;
public:
void put(ino_t key, bool value) { htmap[key] = value; }
bool get(ino_t key) { return htmap[key]; }
};
int file_cnt = 0, link_cnt = 0, dir_cnt = 0;
unsigned long space_used = 0;
struct stat buf;
Hashtable ht;
void listdir (const char *name) {
DIR *dir;
struct dirent *entry;
if (!(dir = opendir(name))) return;
if (!(entry = readdir(dir))) return;
do {
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) continue;
if (entry->d_type == DT_DIR) {
// if (ht.get(&entry->d_ino)) continue;
// ht.put(&entry->d_ino, true);
dir_cnt++;
char path[4096];
int len = snprintf(path, sizeof(path)-1, "%s/%s", name, entry->d_name);
path[len] = 0;
printf("[d] %s/%s\n", name, entry->d_name);
listdir(path);
}
else {
if (ht.get(entry->d_ino)) continue;
if (entry->d_type == DT_LNK) {
link_cnt++;
printf("[l] %s/%s\n", name, entry->d_name);
char path[4096];
int len = snprintf(path, sizeof(path) - 1, "%s/%s", name, entry->d_name);
path[len] = 0;
stat(path, &buf);
space_used += buf.st_blocks * 512;
}
else{
file_cnt++;
printf("[f] %d %s/%s\n", (int)entry->d_ino, name, entry->d_name);
char path[4096];
int len = snprintf(path, sizeof(path) - 1, "%s/%s", name, entry->d_name);
path[len] = 0;
stat(path, &buf);
space_used += buf.st_blocks * 512;
}
ht.put(entry->d_ino, true);
}
} while ((entry = readdir(dir)));
closedir(dir);
}
int main (int argc, char** argv) {
listdir(argv[1]);
printf("\ntotals\nfile count: %d\tdir count: %d\tlink count: %d\nspace used: %lu\n", file_cnt, dir_cnt, link_cnt, space_used);
return 0;
}
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
#include <stdio.h>
#include <sys/stat.h>
#include <unordered_map>
using namespace std;
class Hashtable {
unordered_map<ino_t, bool> htmap;
public:
void put(ino_t key, bool value) { htmap[key] = value; }
bool get(ino_t key) { return htmap[key]; }
};
int file_cnt = 0, link_cnt = 0, dir_cnt = 0;
unsigned long space_used = 0;
struct stat buf;
Hashtable ht;
void listdir (const char *name) {
DIR *dir;
struct dirent *entry;
if (!(dir = opendir(name))) return;
if (!(entry = readdir(dir))) return;
do {
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) continue;
if (entry->d_type == DT_DIR) {
// if (ht.get(&entry->d_ino)) continue;
// ht.put(&entry->d_ino, true);
dir_cnt++;
char path[4096];
int len = snprintf(path, sizeof(path)-1, "%s/%s", name, entry->d_name);
path[len] = 0;
printf("[d] %s/%s\n", name, entry->d_name);
listdir(path);
}
else {
if (ht.get(entry->d_ino)) continue;
if (entry->d_type == DT_LNK) {
link_cnt++;
printf("[l] %s/%s\n", name, entry->d_name);
char path[4096];
int len = snprintf(path, sizeof(path) - 1, "%s/%s", name, entry->d_name);
path[len] = 0;
stat(path, &buf);
space_used += buf.st_blocks * 512;
}
else{
file_cnt++;
printf("[f] %d %s/%s\n", (int)entry->d_ino, name, entry->d_name);
char path[4096];
int len = snprintf(path, sizeof(path) - 1, "%s/%s", name, entry->d_name);
path[len] = 0;
stat(path, &buf);
space_used += buf.st_blocks * 512;
}
ht.put(entry->d_ino, true);
}
} while ((entry = readdir(dir)));
closedir(dir);
}
int main (int argc, char** argv) {
listdir(argv[1]);
printf("\ntotals\nfile count: %d\tdir count: %d\tlink count: %d\nspace used: %lu\n", file_cnt, dir_cnt, link_cnt, space_used);
return 0;
}

View File

@ -1,82 +1,82 @@
#include <dirent.h>
#include <string>
#include <sys/stat.h>
#include <unordered_map>
#include <iostream>
using namespace std;
class Hashtable {
unordered_map<ino_t, bool> ht;
public:
void put(ino_t key, bool value) { ht[key] = value; }
bool get(ino_t key) { return ht[key]; }
};
int dircnt = 0, filecnt = 0, lnkcnt = 0;
unsigned long space_used;
struct stat buf;
Hashtable ht;
bool listFileAndType(const string &dir) {
DIR *dirp = opendir(dir.c_str());
if (dirp) {
struct dirent *dp = 0;
while ((dp = readdir(dirp)) != 0 ) {
string file( dp->d_name );
if (file == "." || file == "..") continue;
if (dp->d_type == DT_DIR) {
string dirPath = dir + "/" + file;
cout << "[d] " << dirPath << endl;
dircnt++;
// recurse into directory
listFileAndType( dirPath );
}
else {
if (ht.get(dp->d_ino)) continue;
switch(dp->d_type) {
case DT_REG:
filecnt++;
cout << "[f] ";
break;
case DT_LNK:
lnkcnt++;
cout << "[l] ";
break;
default:
cout << "[none] ";
break;
}
string statpath = dir + "/" + file;
ht.put(dp->d_ino, true);
stat(statpath.c_str(), &buf);
space_used += buf.st_blocks * 512;
cout << statpath << endl;
}
}
closedir( dirp );
return true;
}
else {
return false;
}
}
int main( int argc, char **argv ) {
const string dir = (argc > 1 ? argv[1] : "foo");
if (!listFileAndType(dir)) {
cout << "Error: Cannot open directory '" << dir << "'" << endl;
}
cout << endl << "totals" << endl;
cout << "file count: " << filecnt << "\tdir cnt: " << dircnt << "\tlink cnt: " << lnkcnt << endl;
cout << "space used: " << space_used << endl;
return 0;
}
#include <dirent.h>
#include <string>
#include <sys/stat.h>
#include <unordered_map>
#include <iostream>
using namespace std;
class Hashtable {
unordered_map<ino_t, bool> ht;
public:
void put(ino_t key, bool value) { ht[key] = value; }
bool get(ino_t key) { return ht[key]; }
};
int dircnt = 0, filecnt = 0, lnkcnt = 0;
unsigned long space_used;
struct stat buf;
Hashtable ht;
bool listFileAndType(const string &dir) {
DIR *dirp = opendir(dir.c_str());
if (dirp) {
struct dirent *dp = 0;
while ((dp = readdir(dirp)) != 0 ) {
string file( dp->d_name );
if (file == "." || file == "..") continue;
if (dp->d_type == DT_DIR) {
string dirPath = dir + "/" + file;
cout << "[d] " << dirPath << endl;
dircnt++;
// recurse into directory
listFileAndType( dirPath );
}
else {
if (ht.get(dp->d_ino)) continue;
switch(dp->d_type) {
case DT_REG:
filecnt++;
cout << "[f] ";
break;
case DT_LNK:
lnkcnt++;
cout << "[l] ";
break;
default:
cout << "[none] ";
break;
}
string statpath = dir + "/" + file;
ht.put(dp->d_ino, true);
stat(statpath.c_str(), &buf);
space_used += buf.st_blocks * 512;
cout << statpath << endl;
}
}
closedir( dirp );
return true;
}
else {
return false;
}
}
int main( int argc, char **argv ) {
const string dir = (argc > 1 ? argv[1] : "foo");
if (!listFileAndType(dir)) {
cout << "Error: Cannot open directory '" << dir << "'" << endl;
}
cout << endl << "totals" << endl;
cout << "file count: " << filecnt << "\tdir cnt: " << dircnt << "\tlink cnt: " << lnkcnt << endl;
cout << "space used: " << space_used << endl;
return 0;
}