diff -urN atftp-0.7.dfsg/tftpd_file.c atftp-0.7.dfsg-winpaths/tftpd_file.c --- atftp-0.7.dfsg/tftpd_file.c 2008-06-20 10:33:43.000000000 -0400 +++ atftp-0.7.dfsg-winpaths/tftpd_file.c 2008-06-20 10:39:51.000000000 -0400 @@ -474,6 +474,28 @@ /* verify that the requested file exist */ fp = fopen(filename, "r"); + /* if it didn't exist, consider the possibilty of Windows */ + if (fp == NULL) + { + char* idx; + idx = strchr(filename,'\\'); + while (idx) { + (*idx) = '/'; + idx = strchr(filename,'\\'); + } + if (strstr(filename,"/Boot/BCD")) + { + char bcdfilename[MAXLEN]; + strncpy(bcdfilename,filename,MAXLEN); + strncat(bcdfilename,".",MAXLEN); + strncat(bcdfilename,inet_ntoa(sa->sin_addr),MAXLEN); + fp = fopen(bcdfilename, "r"); + } + if (fp == NULL) + { + fp = fopen(filename,"r"); + } + } #ifdef HAVE_PCRE if (fp == NULL) {