Hi! I wrote the hack below in C++ to get ls to recognize ".hidden" files (files that list directory entries to be removed from the listing ala MacOS X). I even shoehorned it into ls and added "-lstdc++ hidden.o" to coreutils' Makefile. However, I'd much rather use C instead of C++ and plop the code into ls.c itself (and not depend on the standard C++ library). I don't know the first thing about memory management C, so I was hoping someone here knew the equivalent C code (or could direct me to where I could find out). Thanks!

Code:
// hidden.h
#ifndef HIDDEN_FILE_H
#define HIDDEN_FILE_H

#ifdef __cplusplus
extern "C" {
#endif
void load_hidden_file(const char* a_dir);
int is_hidden(const char* a_entry);
void release_hidden_files();
#ifdef __cplusplus
}
#endif

#endif // HIDDEN_FILE_H

// hidden.cpp
#include <algorithm>
#include <fstream>
#include <string>
#include <vector>
#include "hidden.h"

namespace {
std::vector<std::string> hidden;
}

void load_hidden_file(const char* a_dir) {
std::string line = a_dir + std::string("/.hidden");
std::ifstream file(line.c_str());
if (file)
while(std::getline(file, line))
hidden.push_back(line);
file.close();
}

int is_hidden(const char* a_entry) {
return (std::find(hidden.begin(), hidden.end(), a_entry) != hidden.end())
|| (a_entry[0] == '.');
}

void release_hidden_files() {
hidden.clear();
}