libcm is a C development framework with an emphasis on audio signal processing applications.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

cmFileSysLinux.c 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "cmPrefix.h"
  2. #include "cmGlobal.h"
  3. #include "cmRpt.h"
  4. #include "cmErr.h"
  5. #include "cmCtx.h"
  6. #include "cmMem.h"
  7. #include "cmMallocDebug.h"
  8. #include "cmLinkedHeap.h"
  9. #include "cmFileSys.h"
  10. #include "cmFileSysLinux.h"
  11. #include <glob.h>
  12. //http://developer.apple.com/library/mac/#qa/qa1549/_index.html
  13. cmChar_t* _cmCreatePathByExpandingTildePath( _cmFsLinux_t* p, const char* path )
  14. {
  15. glob_t globbuf;
  16. char **v;
  17. char *expandedPath = NULL, *result = NULL;
  18. assert(path != NULL);
  19. if (glob(path, GLOB_TILDE, NULL, &globbuf) == 0) //success
  20. {
  21. v = globbuf.gl_pathv; //list of matched pathnames
  22. expandedPath = v[0]; //number of matched pathnames, gl_pathc == 1
  23. result = cmLhAllocZ(p->lhH,cmChar_t,strlen(expandedPath) + 1);
  24. //result = (char*)calloc(1, strlen(expandedPath) + 1); //the extra char is for the null-termination
  25. if(result)
  26. strncpy(result, expandedPath, strlen(expandedPath) + 1); //copy the null-termination as well
  27. globfree(&globbuf);
  28. }
  29. return result;
  30. }
  31. cmFsRC_t _cmLinuxFileSysInit( _cmFsLinux_t** pp, cmLHeapH_t lhH, cmErr_t* err )
  32. {
  33. _cmFsLinux_t* p = cmLhAllocZ(lhH,_cmFsLinux_t,1);
  34. p->err = err;
  35. p->lhH = lhH;
  36. p->userDir = _cmCreatePathByExpandingTildePath(p,"~");
  37. p->prefDir = p->userDir; // user preferences will be stored invisible files in the home directory
  38. p->rsrcDir = "/usr/share"; // program resources will be stored in /usr/share/app-name
  39. *pp = p;
  40. return kOkFsRC;
  41. }
  42. cmFsRC_t _cmLinuxFileSysFinalize( _cmFsLinux_t* p )
  43. {
  44. return kOkFsRC;
  45. }