c3788110e8d865774fff8197cf5b47350472ba64 chmalee Tue Aug 4 11:26:55 2026 -0700 Fix hubSpace hook error handling and nested hub path handling, refs #37964 Co-Authored-By: Claude Opus 5 (1M context) diff --git src/hg/hgHubConnect/hooks/hooklib.h src/hg/hgHubConnect/hooks/hooklib.h index cf66cc359ad..7631fdf0c77 100644 --- src/hg/hgHubConnect/hooks/hooklib.h +++ src/hg/hgHubConnect/hooks/hooklib.h @@ -17,42 +17,46 @@ char *prettyFileSize(long size); /* Return a string representing the size of a file */ char *encodePath(char *path); /* Return a string where each individual component of a '/' separated * string has been cgiEncoded, but not the '/' chars themselves */ char *normalizeParentDir(char *parentDir); /* Return parentDir with any surrounding whitespace trimmed off, or NULL if it was NULL. * Every hook that builds a path from this metadata value must normalize it the same way */ boolean isValidParentDir(char *parentDir); /* Return TRUE if every '/' separated component of parentDir holds only alphanumeric, - * period or underscore characters. NULL or empty means the top level of the user's - * directory, which is allowed */ + * period or underscore characters. NULL or empty is invalid, every upload belongs to + * a hub */ char *setUploadPath(char *userName, char *fileName, char *parentDir, boolean forceOverwrite); /* return the path, relative to hg.conf tusdDataDir, where we will store this upload * the full path would be /tusdDataDir/userNamePrefix/userName/parentDir/fileName */ void fillOutHttpResponseError(struct jsonElement *response); void fillOutHttpResponseSuccess(struct jsonElement *response); struct jsonElement *makeDefaultResponse(); /* Create the default response json with some fields pre-filled */ -void rejectUpload(struct jsonElement *response, char *msg, ...); +void rejectUpload(struct jsonElement *response, char *msg, ...) /* Set the keys for stopping an upload */ +#if defined(__GNUC__) +__attribute__((format(printf, 2, 3))) +#endif +; boolean isFileTypeRecognized(char *fileName); /* Return true if this file one of our recognized types */ boolean isExistingHubForUser(char *userName, char *reqHubName); /* Return true if hubName is an existing hub for this user */ char *genomeForHub(char *userName, char *reqHubName); /* Return the genome associated with reqHubName for user */ #endif /* HOOKLIB_H */