title: Accessing the iPhone's Call log with the iPhone SDK
body: <p>I am building application that required some data from iPhone's Call log(read only).
  The call log is a sqlite db located at "<em>/User/Library/CallHistory/call_history.db</em>". I used a jailbroken device to extract the log.
  However trying to open this location using the <em>sqlite_open3()</em> command I get a <em>SQLITE_ERROR</em> error, which according to the library documentation means "SQL error or missing database". In an attempt to debug the error I've used NSFileManager to enumerate the folder('/User/Library/'). It would appear as if it's returning a "filtered" set of results, that exclude the 'CallHistory' folder along with several of the other folders. </p>
  
  <p>The File system uses a series of alias to give the illusion of tradition OS X file structure, and I don't know if these are having an effect on my results.</p>
  
  <p><strong>The call log is only present on a device, and not the simulator</strong>. I've been unable to get it to work on a 1st gen iPhone running fireware 2.1.</p>
  
  <p>This is some code I used to test the output</p>
  
  <pre><code>NSDirectoryEnumerator *dirnum = [[NSFileManager defaultManager] enumeratorAtPath: @"/private/var/mobile/Library/"];
  
  while( bar = [dirnum nextObject])
  {
      //Uncomment if you don't want to log sub folders
      //[dirnum skipDescendents];
  
      NSLog(bar);
  }
  </code></pre>
  
  <p>I have a suspicion that Apple is blocking access to the directory as part of its sandboxing strategy, however I have no proof at this stage. However, I can access the address book without any issues, so I'm a little confused.</p>
  
  <p>Thanks</p>