Справочник по консольным командам Toybox для Android 12


  Ver.0.8.4     Ver.0.8.9     Pending  

Путь: Toys/Other, команды версии: Ver.4     Ver.9


truncate

Комментарии в файле truncate.c :

usage: truncate [-c] -s SIZE file...

Задайте длину файла(ов), слегка удлинив его при необходимости.
  • -c Не создавать файл, если он не существует
  • -s Новый размер (с необязательными префиксом и суффиксом) Префикс SIZE: + добавить, - вычесть, < уменьшить до, > увеличить до, / многократное округление в меньшую сторону, % многократное округление в большую сторону Суффикс РАЗМЕРА: k=1024, m=1024^2, g=1024^3, t=1024^4, p=1024^5, e=1024^6

  • usage: truncate [-c] -s SIZE file...

    Set length of file(s), extending sparsely if necessary.
  • -c Don't create file if it doesn't exist
  • -s New size (with optional prefix and suffix) SIZE prefix: + add, - subtract, < shrink to, > expand to, / multiple rounding down, % multiple rounding up SIZE suffix: k=1024, m=1024^2, g=1024^3, t=1024^4, p=1024^5, e=1024^6

  • Исходный текст в файле truncate.c

    #define FOR_truncate
    #include "toys.h"
    
    GLOBALS(
      char *s;
    
      long size;
      int type;
    )
    
    static void do_truncate(int fd, char *name)
    {
      long long size;
    
      if (fd<0) return;
    
      if (TT.type == -1) size = TT.size;
      else {
        size = fdlength(fd);
        if (TT.type<2) size += TT.size*(1-(2*TT.type));
        else if (TT.type<4) {
          if ((TT.type==2) ? (size <= TT.size) : (size >= TT.size)) return;
          size = TT.size;
        } else {
          size = (size+(TT.type-4)*(TT.size-1))/TT.size;
          size *= TT.size;
        }
      }
      if (ftruncate(fd, size)) perror_msg("'%s' to '%lld'", name, size);
    }
    
    void truncate_main(void)
    {
      int cr = !FLAG(c);
    
      if (-1 != (TT.type = stridx("+-<>/%", *TT.s))) TT.s++;
      TT.size = atolx(TT.s);
    
      // Create files with mask rwrwrw.
      // Nonexistent files are only an error if we're supposed to create them.
      loopfiles_rw(toys.optargs, O_WRONLY|O_CLOEXEC|(cr ? O_CREAT|WARN_ONLY : 0),
        0666, do_truncate);
    }