This rocks
[backups/.git] / filedata.cpp
index 2669b75253f354bbfb2b9440b0db0f70134c67b4..31078ea9878c8c2068a08176812f85e5e5b25ca5 100644 (file)
@@ -6,24 +6,6 @@
 
 using namespace std;
 
-FileData::FileData( char               _type,
-                    string             _permissions,
-                    string             _user,
-                    string             _group,
-                    unsigned long long _size,
-                    unsigned long long _modified_date,
-                    unsigned long long _last_backup,
-                    string             _name )
-: filetype( _type ),
-  permissions( _permissions ),
-  username( _user ),
-  groupname( _group ),
-  filesize( _size ),
-  modified_date( _modified_date ),
-  last_backup_date( _last_backup ),
-  filename( _name )
-{}
-
 vector<string> split( const string &line, char c, int limit = -1 ) {
   string::size_type start = 0, end = 0;
 
@@ -43,11 +25,11 @@ vector<string> split( const string &line, char c, int limit = -1 ) {
   return out;
 }
 
-ostream &operator<<( const FileData *d, ostream &o ) {
-  return operator<<( *d, o );
+ostream &operator<<( ostream &o, const FileData *d) {
+  return operator<<( o, *d );
 }
 
-ostream &operator<<( const FileData &d, ostream &o ) {
+ostream &operator<<( ostream &o, const FileData &d ) {
   o << d.getFileType()       << ' ';
   o << d.getPermissions()    << ' ';
   o << d.getUserName()       << ' ';
@@ -67,9 +49,14 @@ istream &operator>>( istream &i, FileData *d ) {
 istream &operator>>( istream &i, FileData &d ) {
   string file_string;
 
-  for( int c = i.get(); 0 != c && ! i.eof(); c = i.get() ) {
+  int c;
+  // Todo, don't use char_traits<char> directly here
+  for( c = i.get(); 0 != c && char_traits<char>::eof() != c; c = i.get() ) {
     file_string.push_back( c );
   }
+  if( char_traits<char>::eof() == c ) {
+    i.setstate( ios_base::eofbit );
+  }
 
   if( 0 != file_string.size() ) {
     // Example entry
@@ -80,9 +67,9 @@ istream &operator>>( istream &i, FileData &d ) {
     d.setPermissions(    vals[1] );
     d.setUserName(       vals[2] );
     d.setGroupName(      vals[3] );
-    d.setFileSize(       atoi( vals[4].c_str() ) );
-    d.setModifiedDate(   atoi( vals[5].c_str() ) );
-    d.setLastBackupDate( atoi( vals[6].c_str() ) );
+    d.setFileSize(       atoll( vals[4].c_str() ) );
+    d.setModifiedDate(   atoll( vals[5].c_str() ) );
+    d.setLastBackupDate( atoll( vals[6].c_str() ) );
     d.setFileName(       vals[7] );
   }