- offset_p = strchr (filename, '@');
- if (!offset_p)
- {
- fname = xstrdup (filename);
- offset = 0;
- }
- else
+ offset_p = strrchr (filename, '@');
+ if (offset_p
+ && offset_p != filename
+ && sscanf (offset_p, "@%li%n", &loffset, &consumed) >= 1
+ && strlen (offset_p) == (unsigned int)consumed)