- char *p, *subdir = NULL;
-
- p = filename + strlen (filename) - 1;
- while (p > filename + 3 && *p != '/')
- p--;
- if (*p == '/') {
- subdir = p - 3;
- if (subdir > filename && *(subdir - 1) != '/')
- subdir = NULL;
+ const char *slash, *dir = NULL;
+
+ /* Find the last '/' separating directory from filename. */
+ slash = strrchr (filename, '/');
+ if (slash == NULL)
+ return NULL;
+
+ /* Jump back 4 characters to where the previous '/' will be if the
+ * directory is named "cur" or "new". */
+ if (slash - filename < 4)
+ return NULL;
+
+ slash -= 4;
+
+ if (*slash != '/')
+ return NULL;
+
+ dir = slash + 1;
+
+ if (STRNCMP_LITERAL (dir, "cur/") == 0 ||
+ STRNCMP_LITERAL (dir, "new/") == 0)
+ {
+ return dir;