< prev index next >

make/src/native/fixpath.c

Print this page


   1 /*
   2  * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 #include <Windows.h>
  27 #include <stdbool.h>
  28 #include <io.h>
  29 #include <stdio.h>
  30 #include <string.h>
  31 #include <malloc.h>
  32 
  33 void report_error(char const * msg)
  34 {
  35   LPVOID lpMsgBuf;
  36   DWORD dw = GetLastError();
  37 
  38   FormatMessage(
  39       FORMAT_MESSAGE_ALLOCATE_BUFFER |
  40       FORMAT_MESSAGE_FROM_SYSTEM |
  41       FORMAT_MESSAGE_IGNORE_INSERTS,
  42       NULL,
  43       dw,
  44       MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
  45       (LPTSTR) &lpMsgBuf,
  46       0,
  47       NULL);
  48 
  49   fprintf(stderr,
  50           "%s  Failed with error %d: %s\n",
  51           msg, dw, lpMsgBuf);
  52 
  53   LocalFree(lpMsgBuf);
  54 }
  55 
  56 /*
  57  * Test if pos points to /prefix/_/ where _ can
  58  * be any character.
  59  */
  60 int is_prefix_here(int pos, char const *in, int len, const char* prefix)
  61 {
  62   // Length of c/ is 2
  63   int prefix_size = strlen(prefix);
  64   if (pos+prefix_size+2 > len) return 0;
  65   if (in[pos+prefix_size+1]=='/') {


   1 /*
   2  * Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 #include <Windows.h>
  27 #include <stdbool.h>
  28 #include <io.h>
  29 #include <stdio.h>
  30 #include <string.h>
  31 #include <malloc.h>
  32 
  33 void report_error(char const * msg)
  34 {
  35   LPTSTR lpMsgBuf = NULL;
  36   DWORD dw = GetLastError();
  37 
  38   FormatMessage(
  39       FORMAT_MESSAGE_ALLOCATE_BUFFER |
  40       FORMAT_MESSAGE_FROM_SYSTEM |
  41       FORMAT_MESSAGE_IGNORE_INSERTS,
  42       NULL,
  43       dw,
  44       MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
  45       &lpMsgBuf,
  46       0,
  47       NULL);
  48 
  49   fprintf(stderr,
  50           "%s  Failed with error %d: %s\n",
  51           msg, dw, lpMsgBuf);
  52 
  53   LocalFree(lpMsgBuf);
  54 }
  55 
  56 /*
  57  * Test if pos points to /prefix/_/ where _ can
  58  * be any character.
  59  */
  60 int is_prefix_here(int pos, char const *in, int len, const char* prefix)
  61 {
  62   // Length of c/ is 2
  63   int prefix_size = strlen(prefix);
  64   if (pos+prefix_size+2 > len) return 0;
  65   if (in[pos+prefix_size+1]=='/') {


< prev index next >