]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - ipc/ipcdev.git/blob - packages/ti/ipc/getPragmas.xs
TransportRpmsg: Add NULL check to avoid NULL pointer access
[ipc/ipcdev.git] / packages / ti / ipc / getPragmas.xs
1 /*
2  * Copyright (c) 2012-2013, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * *  Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  *
12  * *  Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * *  Neither the name of Texas Instruments Incorporated nor the names of
17  *    its contributors may be used to endorse or promote products derived
18  *    from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 /*
33 *  ======== getFileContents ========
34 *  Returns a string containing the contents of file at 'filename'
35 */
37 var mod = "GateMP";
38 function getFileContents(filename)
39 {
40     var symbolDB = [];
42     try {
43         var input = "";
44         var inputFile = java.io.File(filename);
45         var fos = java.io.FileReader(inputFile);
46         var reader = new java.io.BufferedReader(fos);
47         var line;
48         while ((line = reader.readLine()) != null) {
49             var matched = line.match("(" + mod + "_[^ ,().:\t;\[{}]+)");
50             if (matched != null && symbolDB.indexOf(matched[1]) == -1) {
51                 if (matched[1].indexOf("__") != -1) {
52                     continue;
53                 }
54                 symbolDB.push(matched[1]);
55             }
56         }
58         reader.close();
59     }
60     catch (e) {
61         print(e);
62         throw("Error reading file '" + filename + "'");
63     }
67     return (symbolDB);
68 }
70 function getVal(str)
71 {
72     if (str.indexOf("_S_") != -1) {
73         return (0);
74     }
75     else if (str.indexOf("_E_") != -1) {
76         return (1);
77     }
78     else if (str.match(mod + "_([A-Z_]+[^a-z])")) {
79         return (2);
80     }
81     else if (str != (mod + "_Params_init") && str.match(mod + "_([A-Z])")) {
82         return (3);
83     }
84     else {
85         return (4);
86     }
87 }
89 /*
90  *  ======== sortFunction ========
91  */
92 function sortFunction(a, b)
93 {
94     var valA = getVal(a);
95     var valB = getVal(b);
97     if (valA != valB) {
98         return (valA - valB);
99     }
100     else {
101         return (a > b);
102     }
105 /*
106  *  ======== strPad ========
107  */
108 function strPad(str, pad)
110     for (i = str.length; i < pad; i++) {
111         str += " ";
112     }
113     return(str);
117 var results = getFileContents(mod + ".h");
118 results.sort(sortFunction);
119 for each (var symbol in results) {
120     print("    #pragma FUNC_EXT_CALLED(" + symbol + ");");