int ExtensionIsPicture(wxString *extension)
{
    if ( extension->Length()<=2 )  {
        return 0;    //No way it is a picture extension :P
    }

    unsigned int is_a_picture=0;
    if      ( extension->CmpNoCase(wxT("PNG"))==0 )  {
        is_a_picture=1;
    }
    else if ( extension->CmpNoCase(wxT("PNM"))==0 )  {
        is_a_picture=1;
    }
    else if ( extension->CmpNoCase(wxT("BMP"))==0 )  {
        is_a_picture=1;
    }
    else if ( extension->CmpNoCase(wxT("GIF"))==0 )  {
        is_a_picture=1;
    }
    else if ( extension->CmpNoCase(wxT("PCX"))==0 )  {
        is_a_picture=1;
    }
    else if ( extension->CmpNoCase(wxT("XPM"))==0 )  {
        is_a_picture=1;
    }
    else if ( extension->CmpNoCase(wxT("TIF"))==0 )  {
        is_a_picture=1;
    }

    if ( ExtensionIsJPEGPicture(extension) ) {
        is_a_picture=1;
    }

    return is_a_picture;
}
int AddFileIfItIsAPicture(char *thedirectory,char *subdir,wxString *filename,unsigned int count_only)
{
      if (filename->Length()<=4) { fprintf(stderr,"Filenames must be bigger than .jpg for example\n"); return 0; }

       //char filename_str[1024];
       //strncpy(filename_str,(const char*) filename->mb_str(wxConvUTF8),1024);
       //fprintf(stderr,"AddFileIfItIsAPicture called for %s , %s , %s \n",thedirectory,subdir,filename_str);

      wxString dir_and_filename; dir_and_filename.clear();
      dir_and_filename<<_U2(thedirectory);
      if (thedirectory[strlen(thedirectory)-1]!='/') { dir_and_filename<<_U2("/"); }
      dir_and_filename<<*filename;

      wxFileName fname(dir_and_filename);
      wxString extension=fname.GetExt();
      wxString fullname =fname.GetFullName();

      if (!fname.FileExists( )) { fprintf(stderr,"Not a file ..!\n"); }
          else
     // if (fname.DirExists( )) { fprintf(stderr," Not a directory ..!\n"); }
     //     else
      if ( ExtensionIsPicture(&extension) )
        {
          if (!count_only)
          {
            if ( pictures_count >= list_size )  { /*Our list cannot acommodate any more data error*/ return 0; }

            strncpy(list[pictures_count].filename,(const char*) fullname.mb_str(wxConvUTF8),256);
            if (subdir==0) { strncpy(list[pictures_count].subdir,"\0",1024);   } else
                           { strncpy(list[pictures_count].subdir,subdir,1024); }

            wxDateTime mod_time=fname.GetModificationTime();
            list[pictures_count].year=mod_time.GetYear();
            list[pictures_count].month=mod_time.GetMonth();
            list[pictures_count].day=mod_time.GetDay();
            list[pictures_count].day_of_year=mod_time.GetDayOfYear();
            list[pictures_count].hour=mod_time.GetHour();
            list[pictures_count].minute=mod_time.GetMinute();
            list[pictures_count].second=mod_time.GetSecond();

            if (ExtensionIsJPEGPicture(&extension)) { list[pictures_count].is_jpeg=1; } else
                                                    { list[pictures_count].is_jpeg=0; }

            wxULongLong size_long_long = fname.GetSize();
            list[pictures_count].filesize=(unsigned int) size_long_long.ToULong();

            ++pictures_count;
          }
          return 1;
        }
  return 0;
}