# HG changeset patch # User Chris Cannam # Date 1159216364 0 # Node ID 603991c63ff63ae2af05951fbb08aa2afc2897ad # Parent 04baa690f90ddd14fc7c2508374f3ec9040f7d6d ... diff -r 04baa690f90d -r 603991c63ff6 base/StorageAdviser.h --- a/base/StorageAdviser.h Mon Sep 25 13:44:05 2006 +0000 +++ b/base/StorageAdviser.h Mon Sep 25 20:32:44 2006 +0000 @@ -39,9 +39,17 @@ UseAsMuchAsYouLike = 8 }; - // may throw InsufficientDiscSpace exception if it looks like - // minimumSize won't fit on the disc + // May throw InsufficientDiscSpace exception if it looks like + // minimumSize won't fit on the disc. + /** + * Recommend where to store some data, given certain storage and + * recall criteria. The minimum size is the approximate amount of + * data in bytes that will be stored if the recommendation is to + * ConserveSpace; the maximum size is approximately the amount + * that will be used if UseAsMuchAsYouLike is returned. + **!!! sizes should be longer types + */ static Recommendation recommend(Criteria criteria, int minimumSize, int maximumSize); diff -r 04baa690f90d -r 603991c63ff6 system/System.cpp --- a/system/System.cpp Mon Sep 25 13:44:05 2006 +0000 +++ b/system/System.cpp Mon Sep 25 20:32:44 2006 +0000 @@ -15,8 +15,6 @@ #include "System.h" -#include -#include #include #include @@ -79,28 +77,28 @@ int GetRealMemoryMBAvailable() { - // ugh - QFile meminfo("/proc/meminfo"); - if (meminfo.open(QFile::ReadOnly)) { - std::cerr << "opened meminfo" << std::endl; - QTextStream in(&meminfo); - while (!in.atEnd()) { - QString line = in.readLine(256); - std::cerr << "read: \"" << line.toStdString() << "\"" << std::endl; - if (line.startsWith("MemFree:")) { - QStringList elements = line.split(' ', QString::SkipEmptyParts); - QString unit = "kB"; - if (elements.size() > 2) unit = elements[2]; - int size = elements[1].toInt(); - std::cerr << "have size \"" << size << "\", unit \"" - << unit.toStdString() << "\"" << std::endl; - if (unit.toLower() == "gb") return size * 1024; - if (unit.toLower() == "mb") return size; - if (unit.toLower() == "kb") return size / 1024; - return size / 1048576; - } + FILE *meminfo = fopen("/proc/meminfo", "r"); + if (!meminfo) return -1; + + char buf[256]; + while (!feof(meminfo)) { + fgets(buf, 256, meminfo); + if (strncmp(buf, "MemFree:", 8)) { + fclose(meminfo); + QString line = QString(buf).trimmed(); + QStringList elements = line.split(' ', QString::SkipEmptyParts); + QString unit = "kB"; + if (elements.size() > 2) unit = elements[2]; + int size = elements[1].toInt(); +// std::cerr << "have size \"" << size << "\", unit \"" +// << unit.toStdString() << "\"" << std::endl; + if (unit.toLower() == "gb") return size * 1024; + if (unit.toLower() == "mb") return size; + if (unit.toLower() == "kb") return size / 1024; + return size / 1048576; } } + fclose(meminfo); return -1; }