Example #1
0
int	WriteCode ( struct listentry *first, char *code_srcdir, char *code_dstdir, int tablen, int fillcol )
{
 char			*ctemp;
/* char			dirname[256];*/
 DIR			*opdir;
 struct listentry	*tclist;
 struct dirent		*dp;

 if ( code_srcdir[strlen(code_srcdir)-1] == '/' ) code_srcdir[strlen(code_srcdir)-1] = '\0';

 opdir = opendir ( code_srcdir );
 if ( !opdir )
	{
	 perror ( code_srcdir );
	 return -1;
	}

 for ( dp = readdir ( opdir ); dp != NULL; dp = readdir ( opdir ) )
	{
	 ctemp = strrchr ( dp->d_name, '.' );
	 if ( ctemp && ( strcmp ( ctemp, ".ttcn" ) == 0 ) )
		{
		 char	fullname[MAXLEN];
		 char	inbuf[1024];
		 FILE	*rfile, *wfile;

		 sprintf ( fullname, "%s/%s", code_srcdir, dp->d_name );
		 if ( ( rfile = fopen ( fullname, "rt") ) == NULL )
			{
			 perror ( fullname );
			 return -1;
			}

		 while ( fgets ( inbuf, sizeof ( inbuf ), rfile ) != NULL )
			{
			 ctemp = strchr ( inbuf, 't' );
			 if ( ctemp && ( strncmp ( ctemp, "testcase", 8 ) == 0 ) )
				{
				 tclist = first;
				 while ( tclist->next != NULL )
					{
					 ctemp = strchr ( inbuf, tclist->tcname[0] );
					 if ( ctemp && ( strncmp ( ctemp, tclist->tcname, strlen ( tclist->tcname ) ) == 0 ) )
						{
						 int	indent = 0, comment = 0;
						 int	started = 0, needed = 1;

						 sprintf ( fullname, "%s/%s.ttcn", code_dstdir, tclist->tcname );
						 if ( ( wfile = fopen ( fullname, "wt") ) == NULL )
							{
							 perror ( fullname );
							 return -1;
							}

						 indent = GetIndent ( inbuf, strlen ( inbuf ), indent, comment );
						 if ( indent ) started = 1;
						 TruncateLine ( inbuf, strlen ( inbuf ), tablen, fillcol, wfile );
						 while ( needed )
							{
							 if ( fgets ( inbuf, sizeof ( inbuf ), rfile ) == NULL ) break;
							 indent = GetIndent ( inbuf, strlen ( inbuf ), indent, comment );
							 if ( ! started && indent ) started = 1;
							 if ( started && ! indent ) needed = 0;
							 TruncateLine ( inbuf, strlen ( inbuf ), tablen, fillcol, wfile );
							}
						 fclose ( wfile );
						}
					 tclist = tclist->next;
					}
				}
			}

		 fclose ( rfile );
		}
	}

 if ( closedir ( opdir ) != 0 )
	{
	 perror ( code_srcdir );
	 return -1;
	}

 return 0;
}
Example #2
0
int	WriteDump ( struct listentry *first, char *dump_srcdir, char *dump_dstdir, int tablen, int fillcol )
{
/* char			*ctemp;
 char			dirname[256];*/
 char		 	fullname[MAXLEN];
 DIR			*opdir;
 struct listentry	*tclist;
 struct dirent		*dp;

 if ( dump_srcdir[strlen(dump_srcdir)-1] == '/' ) dump_srcdir[strlen(dump_srcdir)-1] = '\0';

 opdir = opendir ( dump_srcdir );
 if ( !opdir )
	{
	 perror ( dump_srcdir );
	 return -1;
	}

 for ( dp = readdir ( opdir ); dp != NULL; dp = readdir ( opdir ) )
	{
	 if ( ( strcmp ( dp->d_name, ".." ) == 0 ) || ( strcmp ( dp->d_name, "." ) == 0 ) ) continue;

	 tclist = first;
	 while ( tclist->next != NULL )
		{
		 sprintf ( fullname, "%s.dump", tclist->tcname );
		 if ( strcmp ( dp->d_name, fullname ) == 0 )
			{
			 char	inbuf[1024];
			 FILE	*rfile, *wfile;

			 sprintf ( fullname, "%s/%s", dump_srcdir, dp->d_name );
			 if ( ( rfile = fopen ( fullname, "rt") ) == NULL )
				{
				 perror ( fullname );
				 return -1;
				}

			 sprintf ( fullname, "%s/%s.dump", dump_dstdir, tclist->tcname );
			 if ( ( wfile = fopen ( fullname, "wt") ) == NULL )
				{
				 perror ( fullname );
				 return -1;
				}

			 while ( fgets ( inbuf, sizeof ( inbuf ), rfile ) != NULL )
				{
				 GetIndent ( inbuf, strlen ( inbuf ), 0, 0 );
				 TruncateLine ( inbuf, strlen ( inbuf ), tablen, fillcol, wfile );
				}
			 fclose ( rfile );
			 fclose ( wfile );
			}
		 tclist = tclist->next;
		}
	}

 if ( closedir ( opdir ) != 0 )
	{
	 perror ( dump_srcdir );
	 return -1;
	}

 return 0;
}
Example #3
0
WORD NEAR  LoadLine(PSTR line, int *lineLen, int nbLines)
{
    char prevCh = 0;
    register char ch;
    int level = NON_VALID_LEVEL;
    int extLineLen = 0;
    int totLen;

    *lineLen = 0;

    while (TRUE) {

        //Load next char, don't call LoadChar function to go faster

        if (dwOffsetDoc < dwBytesReadDoc) {
            ch = (char)pszBufferDoc[dwOffsetDoc++];
        } else  if (dwBytesReadDoc < DISK_BLOCK_SIZE) {
            ch = CTRL_Z;
        } else {
            if (!ReadFile(hFileDoc, pszBufferDoc, DISK_BLOCK_SIZE, 
                &dwBytesReadDoc, NULL)) {
                  
                return ERR_File_Read;

            } else {
                if (dwBytesReadDoc == 0) {
                    ch = CTRL_Z;
                } else {
                    ch = (char)pszBufferDoc[0];
                }
            }
            dwOffsetDoc = 1;
        }

        switch (ch) {
            
        case CR:
            break;
            
        case LF:
            if (*lineLen > MAX_USER_LINE) {
                if (TruncateLine(line, nbLines)) {
                    (*lineLen)--;
                } else {
                    return END_ABORT;
                }
            }
            return END_OF_LINE;



          case TAB:
            {
                int  i;

                //Calc number of spaces to insert

                totLen = extLineLen;

                i = g_contGlobalPreferences_WkSp.m_nTabSize - (totLen % g_contGlobalPreferences_WkSp.m_nTabSize);

                if (totLen + i >= MAX_USER_LINE) {
                    if (TruncateLine(line, nbLines)) {

                        char k;

                        //Padd blanks until end of line or remove char
                        (*lineLen)--;

                        //Discard rest of line from input file

                        do {
                            k = LoadChar();
                        } while (k != - 1 && k != CTRL_Z && k != LF);
                        switch (k) {
                          case -1:
                            return ERR_File_Read;
                          case LF:
                            return END_OF_LINE;
                          case CTRL_Z:
                            return END_OF_FILE;
                        }

                        return END_OF_LINE;

                    } else
                          return END_ABORT;
                }

                //Skip if we keep the tab

                extLineLen += i;
                goto defaut;

                //Insert spaces otherwise

                while (i--)
                    line[(*lineLen)++] = ' ';
                break;
            }

          case CTRL_Z:
            return END_OF_FILE;

          default:
          defaut:
            totLen = extLineLen;

            if (totLen > MAX_USER_LINE) {
                if (TruncateLine(line, nbLines)) {

                    char k;

                    (*lineLen)--;


                    //Discard rest of line from input file
                    do {
                        k = LoadChar();
                    } while (k != - 1 && k != CTRL_Z && k != LF);
                    switch (k) {
                      case -1:
                        return ERR_File_Read;
                      case LF:
                        return END_OF_LINE;
                      case CTRL_Z:
                        return END_OF_FILE;
                    }
                    return END_OF_LINE;


                } else
                    return END_ABORT;
             }
             line[(*lineLen)++] = (char)ch;
             extLineLen++;
         }
         prevCh = ch;
     }
}                                       /* LoadLine() */