On Thu, Jan  3, 2013 at 13:14:58 -0500, Egbert Eich wrote:

> @@ -836,6 +841,16 @@ doDirectory(const char *dirname_given, int numEncodings, 
> ListPtr encodingsToDo)
>  
>          filename = dsprintf("%s%s", dirname, entry->d_name);
>  
> +#define PRIO(x) ((x << 1) + tprio)
> +#ifdef _BSD_SOURCE

this should be #ifdef DT_LNK...

> +    if (DT_LNK & entry->d_type)
> +     tprio = 0;
> +#else

and should fall back to lstat if d_type is D_UNKNOWN.

Cheers,
Julien

> +    if (lstat(filename, &f_stat))
> +         goto done;    
> +    if (S_ISLNK(file_stat.st_mode))
> +     tprio = 0;
> +#endif
>          if(doBitmaps)
>              rc = bitmapIdentify(filename, &xlfd_name);
>          else
> @@ -896,7 +911,7 @@ doDirectory(const char *dirname_given, int numEncodings, 
> ListPtr encodingsToDo)
>                  xlfd = listCons(s, xlfd);
>              } else {
>                  /* Not a reencodable font -- skip all the rest of the loop 
> body */
> -                putHash(entries, xlfd_name, entry->d_name, 
> filePrio(entry->d_name));
> +                putHash(entries, xlfd_name, entry->d_name, 
> PRIO(filePrio(entry->d_name)));
>                  goto done;
>              }
>          }
> @@ -930,7 +945,7 @@ doDirectory(const char *dirname_given, int numEncodings, 
> ListPtr encodingsToDo)
>                      found = 1;
>                      snprintf(buf, MAXFONTNAMELEN, "%s-%s",
>                              lp->value, encoding->value);
> -                    putHash(entries, buf, entry->d_name, 
> filePrio(entry->d_name));
> +                    putHash(entries, buf, entry->d_name, 
> PRIO(filePrio(entry->d_name)));
>                  }
>              }
>              for(encoding = extra_encodings; encoding;
> @@ -939,7 +954,7 @@ doDirectory(const char *dirname_given, int numEncodings, 
> ListPtr encodingsToDo)
>                      /* Do not set found! */
>                      snprintf(buf, MAXFONTNAMELEN, "%s-%s",
>                              lp->value, encoding->value);
> -                    putHash(entries, buf, entry->d_name, 
> filePrio(entry->d_name));
> +                    putHash(entries, buf, entry->d_name, 
> PRIO(filePrio(entry->d_name)));
>                  }
>              }
>          }
> @@ -949,6 +964,7 @@ doDirectory(const char *dirname_given, int numEncodings, 
> ListPtr encodingsToDo)
>          deepDestroyList(xlfd);
>          xlfd = NULL;
>          free(filename);
> +#undef PRIO
>      }
>  
>      closedir(dirp);
> -- 
> 1.7.7
> 
> _______________________________________________
> [email protected]: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
> 
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to