コード例 #1
0
ファイル: scaffolding.c プロジェクト: dhill12/test
/*
 * appends to a string, resizing if necessary
 *
 * @param ds - the string to append to
 * @param to_append - the string being appended
 */
int append_dynamic_string(
    
  dynamic_string *ds,        /* M */
  const char     *to_append) /* I */

  {
  int len = strlen(to_append);
  int add_one = FALSE;
  int offset = ds->used;

  if (ds->used == 0)
    add_one = TRUE;
  else
    offset -= 1;

  resize_if_needed(ds, to_append);
  strcat(ds->str + offset, to_append);
    
  ds->used += len;

  if (add_one == TRUE)
    ds->used += 1;

  return(PBSE_NONE);
  } /* END append_dynamic_string() */
コード例 #2
0
int size_to_dynamic_string(
    
  dynamic_string    *ds,   /* O */
  struct size_value *szv)  /* I */

  {
  char buffer[MAXLINE];
  int  add_one = FALSE;

  if (ds->used == 0)
    add_one = TRUE;

  sprintf(buffer, "%lukb", szv->atsv_num);
  resize_if_needed(ds, buffer);

  sprintf(buffer, "%lu", szv->atsv_num);
  strcat(ds->str, buffer);
  
  switch (szv->atsv_shift)
    {
    case 10:

      strcat(ds->str, "kb");

      break;

    case 20:

      strcat(ds->str, "mb");

      break;

    case 30: 

      strcat(ds->str, "gb");

      break;

    case 40:

      strcat(ds->str, "tb");

      break;

    case 50:

      strcat(ds->str, "pb");

      break;
    }

  ds->used += strlen(buffer) + 2;
  if (add_one == TRUE)
    ds->used += 1;

  return(PBSE_NONE);
  } /* END size_to_dynamic_string() */
コード例 #3
0
ファイル: scaffolding.c プロジェクト: dhill12/test
/*
 * performs a strcpy at the end of the string (used for node status strings)
 * the difference is this function places strings with their terminating 
 * characters one after another:
 * string_one'\0'string_two'\0'...
 *
 * @param ds - the dynamic string we're copying to
 * @param str - the string being copied
 */
int copy_to_end_of_dynamic_string(

  dynamic_string *ds,
  const char     *to_copy)

  {
  int     len = strlen(to_copy) + 1;

  resize_if_needed(ds, to_copy);
    
  strcpy(ds->str + ds->used,to_copy);
  ds->used += len;

  return(PBSE_NONE);
  } /* END copy_to_end_of_dynamic_string() */
コード例 #4
0
ファイル: bugzillapreferences.cpp プロジェクト: haobug/gnote
bool BugzillaPreferences::copy_to_bugzilla_icons_dir(const std::string & file_path,
        const std::string & host,
        std::string & err_msg)
{
    err_msg = "";

    sharp::FileInfo file_info(file_path);
    std::string ext = file_info.get_extension();
    std::string saved_path = s_image_dir + "/" + host + ext;
    try {
        if (!sharp::directory_exists (s_image_dir)) {
            g_mkdir_with_parents(s_image_dir.c_str(), S_IRWXU);
        }

        sharp::file_copy (file_path, saved_path);
    }
    catch (const std::exception & e) {
        err_msg = e.what();
        return false;
    }

    resize_if_needed (saved_path);
    return true;
}
コード例 #5
0
int append_dynamic_string_xml(
    
  dynamic_string *ds,
  const char     *str)

  {
  int i;
  int len = strlen(str);
  int empty_at_start = (ds->used == 0);

  if (empty_at_start == FALSE)
    ds->used -= 1;

  for (i = 0; i < len; i++)
    {
    /* Resize if needed
     * note - QUOT_ESCAPED_LEN is the most we could be adding right now */
    resize_if_needed(ds, QUOT_ESCAPED);

    switch (str[i])
      {
      case '<':

        strcat(ds->str, LT_ESCAPED);
        ds->used += LT_ESCAPED_LEN;

        break;

      case '>':

        strcat(ds->str, GT_ESCAPED);
        ds->used += GT_ESCAPED_LEN;

        break;

      case '&':

        strcat(ds->str, AMP_ESCAPED);
        ds->used += AMP_ESCAPED_LEN;

        break;

      case '"':

        strcat(ds->str, QUOT_ESCAPED);
        ds->used += QUOT_ESCAPED_LEN;

        break;

      case '\'':

        strcat(ds->str, APOS_ESCAPED);
        ds->used += APOS_ESCAPED_LEN;

        break;

      default:

        /* copy one character */
        ds->str[ds->used] = str[i];
        ds->used += 1;

        break;
      }
    }

  ds->str[ds->used] = '\0';
  ds->used += 1;

  return(PBSE_NONE);
  } /* END append_dynamic_string_xml() */